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学习笔记1 数据类型
Jan 11 Javascript
JS加jquery简单实现标签元素的显示或隐藏
Sep 23 Javascript
form表单action提交的js部分与html部分
Jan 07 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
node.js处理前端提交的GET请求
Aug 30 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
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
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
大学社团招新的通讯稿
2014/09/10 职场文书
文员岗位职责
2015/02/04 职场文书
承诺书模板大全
2015/05/04 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP