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 学习之旅 (2)
Feb 05 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
浅谈移动端之js touch事件 手势滑动事件
Nov 07 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
javascript实现简单页面倒计时
Mar 02 Javascript
Vue全局事件总线你了解吗
Feb 24 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
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
javascript 函数式编程
2007/08/16 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
Js获取事件对象代码
2010/08/05 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
浅谈Node 调试工具入门教程
2018/03/20 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python3基础之函数用法
2014/08/13 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python for循环remove同一个list过程解析
2019/08/14 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
农行实习自我鉴定
2013/09/22 职场文书
学生个人的自我评价分享
2013/11/05 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
小学红领巾中秋节广播稿
2014/01/13 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
团队拓展活动总结
2014/08/27 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
思想品德课教学反思
2016/02/24 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang