js函数和this用法实例分析


Posted in Javascript onMarch 13, 2020

本文实例讲述了js函数和this用法。分享给大家供大家参考,具体如下:

js的所有代码都是由funtion组成,funtion即函数的类型。

一.函数有两种写法

-----1.定义式

function test() { //定义一个函数
    console.log("function test called!!");
}

-----2.变量式

var test2 = function () {
    console.log("var test2 function called!!");
};

我们可以调用typeof()查看类型

var type = typeof(test2);
console.log(type); //function

二.函数也是对象

-----1.函数既然是对象,即就可以有属性和功能。函数也可以动态的增加属性,如下:

function test() {
    console.log("function test() called!!!");
}
test.user_name = "zhangsan";
console.log(test.user_name); //zhangsan

三.函数的实例化

    函数的实例化也有两种方式:

---------1.直接在函数名后面加上"()"         @@@@@常用这种方式

function test() {
    console.log("function test() called!!!");
}
test(); //function test() called!!!

---------2.使用关键字"new"进行实例化

function test() {
    console.log("function test() called!!!");
}
new test(); //function test() called!!!

四.this机制

//=====================this机制==================
function my_func(rhs, lhs) {
    console.log(this, rhs, lhs);
}
 
//显示不确定的this
//my_func(); //console显示
 
//--------------显示传递this-----------
//函数名.call(this,参数...) 显示传递this
my_func.call({ 0: "jade" }, 2, 3);
//------------------------------------
 
var tools = {
    my_func: my_func,
};
 
//表.key() --->this是表
tools.my_func(2, 3); //this是tools
// 相当于
tools.my_func.call(tools, 2, 3);
 
//强制绑定this,优先级最高
//函数.bind,不会改变原来函数对象的this,而是会产生一个新的临时的对象
//bind好了this
var new_func = my_func.bind({ name: "jade" });
new_func(3, 4);
 
tools.my_func = new_func;
tools.my_func(3, 4); //this是表{name:"jade"}
my_func(3, 4); //this不变,consloe
 
//====call与bind有什么区别呢?==
//bind最牛的地方是什么?是绑定this的时候,
//不是由调用者来决定的
 
new_func.call({ 0: 1 }, 3, 4); //this还是表{name:"jade"},不是{0:1}
 
//==================总结=============================
//在函数里面访问this,this是由调用的环境来决定的,不确定,一般不使用
//1.显示的传递this,函数.call(this对象,参数)
//2.隐式的传递this,表.key_函数(参数),this---》表
//3.bind优先级别是最高的

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
Apr 20 Javascript
jQuery插件的写法分享
Jun 12 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
jquery实现的用户注册表单提示操作效果代码分享
Aug 28 Javascript
精通JavaScript的this关键字
May 28 Javascript
深入解析JavaScript中的立即执行函数
May 21 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
深入剖析Node.js cluster模块
May 23 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
js对象简介与基本用法示例
Mar 13 #Javascript
JS自定义滚动条效果
Mar 13 #Javascript
js Math数学简单使用操作示例
Mar 13 #Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 #Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 #Javascript
vue动态渲染svg、添加点击事件的实现
Mar 13 #Javascript
创建nuxt.js项目流程图解
Mar 13 #Javascript
You might like
PHP安全编程之加密功能
2006/10/09 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
10条php编程小技巧
2015/07/07 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
全面理解闭包机制
2016/07/11 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python常用模块介绍
2014/11/21 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python SQLite3简介
2018/02/22 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
农村改厕实施方案
2014/03/22 职场文书
安全口号大全
2014/06/21 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书