Js 函数与对象的区别及原生链的理解
来源:互联网 发布:淘宝众筹 淘宝怎么不管 编辑:程序博客网 时间:2024/05/01 15:38
一. Js 函数和对象的区别
function Test (word) {
console.log (word);
}
Var test1=Test(‘函数’);
Var test2=new Test(‘对象’);
alert(typeof(test1)));// undefined
alert(typeof(new test2 ()));//object
其实函数本身是一个对象,但它同时也是对象构造器,也就是说,可以new一个函数来返回一个对象。
二. 原型链
var base = {
name : “base”,
getInfo : function(){
return this.id+”======”+this.name;
}
};
var ext1 = {
id : 0,
_ _ proto_ _ : base
};
var ext2 = {
id : 9,
_ _ proto _ _ : base
};
console.log(ext1.id);//0
console.log(ext1.getInfo());//0=====base
console.log(ext2.id);//9
console.log(ext2.getInfo());//9=====base
这图片是什么意思呢?
当ext1和ext2调用getInfo时,先到实例当中去找这个函数,结果没找到。接着就到原型找,结果找到了,就执行这个函数。但是执行这个函数时:this代表什么呢?this的指向是谁?
在默认情况下,所有原型对象都会自动获得一个 constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。
那么显而易见,这个this就是指向他们各自对应的实例。
那你又想问,那this.name怎么解释呢?
你想呀,你的this是指向实例的,this先在实例当中找,没找到name,那么就到原型链中寻找。
当然,上面的图没话完整,想补全可以自己上百度搜搜 js原型链就行了。
- Js 函数与对象的区别及原生链的理解
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- js对象及new对象/函数的比较区别
- JS-原生/对于promise对象以及异步机制的理解
- jQuery对象与原生JS dom对象间的转换
- jQuery对象与JS原生dom对象之间的转换
- js与原生不能交互-js的window对象
- js原生操作HTML对象的属性区别
- JS原生获取对象的所有属性-函数包装
- js原生ajax与jquery的ajax的用法区别
- jquery与js原生 的加载方式区别
- JS类,对象,实例,属性,方法,事件区别 以及 原生js click和 onclick的区别
- nodejs工具util.inherits与原生js的原型链继承实现与区别
- js 对象理解(2)---对象的原型与对象
- js函数声明语句与函数表达式的区别深入理解
- 原生的js与jquery的js对象之间的转换
- 扩展js原生对象的正确姿势
- 原生js的面向对象相关
- mysql数据库(1)
- Spring + Maven + Dubbo + MyBatis + Linner + Handlebars-Web开发环境搭建
- 通过Python实现定时器和利用魔法方法改善友好交互
- Best Time to Buy and Sell Stock
- InteliJ Idea 2017.1 for Mac 版 objc[4163]: Class JavaLaunchHelper is implemented in both XXX提示
- Js 函数与对象的区别及原生链的理解
- 算法训练 输出米字形
- Apriori算法
- Merge Two Sorted Lists
- 马尔可夫模型的一步转移概率矩阵Java代码实现
- oracle数据库系列-Archivelog归档文件相关操作
- 建表
- Android6.1 开关机动画和Logo制作与修改
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 方阵旋转(代码填空)