原型和原型链

68 阅读1分钟

我发现许多人对此都难以理解。

尝试地写一下。

JS创建对象的方式

第一种方式

new 一个函数,函数是一个对象,new一个函数并把该函数赋值给一个对象,比如

var Obj1 = new function(){......},

背后实现的原理便是先创建一个对象,并把这个对象作为this参数从而调用后面的函数

第二种方式

JSON(javascript object notation)javascript对象标记法,json本质上就是一种字典,里面储存的属性和方法都是用字典的方式来存储,用一对大括号括起来一个空字典,同时也是一个空对象,用逗号分隔开每个属性和方法,用冒号来定义字典内每一个项内容,左侧是key,用来访问右侧的值,比如

var person{

"name": "jack",

"age":"22",

“sayhello":function(){alert("hello world")}

}

对象通俗的理解就是:你的对象本身有许多种属性。比如姓名,年龄,技能。

代码示例

function Person(nick, age){
    this.name = nick;
    this.age = age;
}

通过prototype增加方法

Person.prototype.sayName = function(){
    console.log(this.name);
}


传给子代

var p1 = new Person('Byron', 20);

var p2 = new Person('Casper', 25);

p1.sayName()  // Byron

p2.sayName()  // Casper

_proto_与prototype之间的关系


p1.__proto__ === Person.prototype       //true

p2.__proto__ === Person.prototype   //true

p1.__proto__ === p2.__proto__           //true

Person.prototype.constructor === Person  //true

参考文献:

www.cnblogs.com/meowding/p/…

www.zhihu.com/search?type…