Js 函数与对象的区别及原生链的理解
2017-04-01 13:11
204 查看
一. 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原型链就行了。
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的函数和构造函数的区别
- 理解JavaScript函数(函数和对象的区别和联系)(转)
- JavaScript-js中把一个函数赋给一个对象时带不带括号的区别?
- 马上理解js中的函数为何是一个对象
- js 对象与函数的区别
- 【javascript基础】之【理解JavaScript函数(函数和对象的区别和联系)】
- 通过jquery获取input的value问题--理解JQuery对象和JS:DOM对象区别与联系
- JS中this和对象作为函数参数的区别
- 理解JavaScript函数(函数和对象的区别和联系)
- 从对象和函数(或称构造函数)两个维度理解js中的函数
- 理解JavaScript函数(函数和对象的区别和联系)
- JS概念理解(一)——函数和对象、原型链、_proto_
- 马上理解js中的函数为何是一个对象
- 如何让你快速轻松理解js的函数和构造函数的区别
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- js函数声明语句与函数表达式的区别深入理解
- 理解JavaScript函数(函数和对象的区别和联系)
- 理解JavaScript函数(函数和对象的区别和联系)
- strlen和sizeof函数区别(深入理解)
- js 解决中文乱码函数-js中escape,encodeURI,encodeURIComponent三个函数的区别