原型及原型链

原型定义:

原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。
通过构造函数产生的对象,可以继承该原型的属性和方法。
原型是对象属性prototype对应的值。

注:原型是一个对象。
我们可以直接在构造函数的prototype上直接添加属性,也可以将构造函数的prototype指向一个对象,如下:
在原型上添加属性和方法后,通过构造函数生成的对象可以直接使用原型上的属性及方法(优先使用自己的)。

function Man() {
}
Man.prototype.sex = "man"  //直接添加属性
Man.prototype.saySex = function () {
    console.log("I am " + this.sex);
}
var man = new Man();
man.saySex();  // I am man

function Woman() {
}
Woman.prototype = {  //指向一个对象
    sex: "woman",
    saySex: function () {
        console.log("I am " + this.sex);
    },
    constructor: Woman  //由于指向的新对象中没有constructor,所以添加了指向构造函数的constructor,这个值可以不添加
};
var woman = new Woman();
woman.saySex();  // I am woman


上图为控制台打印结果,在原型上添加属性和将原型指向一个对象(对象中添加了指向构造函数的constructor)是一样的(初学前端,如有错误还望指教)。

.
对象查看原型:隐式属性 __proto __
如:man.__proto __ ==> Man.prototype
在这里插入图片描述
原型链:通过prototype将原型连成的链就是原型链,如下:

GrandFather.prototype.name = "zhang";
function GrandFather(){
}
var grandFather = new GrandFather();
grandFather.sayName = function(){
    console.log(this.name);
}
Father.prototype = grandFather;  // 将grandFather作为Father的原型
function Father(){
}
var father = new Father();
Son.prototype = father;  // 将father作为Son的原型
function Son(){
}
var son = new Son();
son.sayName();  // 输出 zhang

.
没有继承Object.prototype的对象:Object.create(null)

var obj1 = Object.create(null);
var obj2 = {};
var obj3 = new Object();

在这里插入图片描述
如上所示,只有obj1没有继承Object

微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值