标签:找不到 tor 函数 function javascrip 作用 cto prot obj
javascript中没有类的概念,通过创建构造函数来创建以这个构造函数为模板的对象。
在JS中,函数共有两个功能:
创建一个函数
function fun_1(str_1){
this.name = str_1;
}
这里发生了两件事:
fun_1函数对象有一个prototype指针,指向fun_1_proto
fun_1_proto原型对象有一个constructor指针,指向其构造函数,即fun_1
var obj_1 = new fun_1();
fun_1.prototype.age = 99;
alert(obj_1.age); //99
问题来了,为什么定义了原型对象中的成员变量,函数对象的实例也能访问到呢?
每个实例化的对象都有一个__proto__指针,指向其构造函数的原型对象
alert(obj_1.__proto__.age == fun_1.prototype.age);
alert(obj_1.__proto__ == fun_1.prototype);
访问实例化对象的属性时,首先会在实例化对象中寻找;若没有找到,则顺着__proto__指针到原型对象中去找,若还未找到,则返回undefined
此时引申出原型链的含义:由于所有对象中都有__proto__指针指向其构造函数的原型对象,程序寻找某个成员变量时,只要找不到,就顺着__proto__指针向上去查上级的原型对象,一层接一层,即形成了原型链。
实际开发中利用prototype增加属性,只在当前程序中起作用,还可以扩展系统类的功能
标签:找不到 tor 函数 function javascrip 作用 cto prot obj
原文地址:http://www.cnblogs.com/jiaoxuanwen/p/6676181.html