JavaScript原型详解——面试重点

一、原型的含义:JavaScript 中的“原型”既指 函数身上的 prototype 对象,也指 对象身上的 [[Prototype]] 隐藏链接;它俩共同构成了“原型链”,决定了“找不到属性时去哪里继续找”的规则。

(1)原型对象(prototype)

问题:构造函数中资源浪费的问题。下述例子为浪费内存的代码例子:
//构造函数中的属性和方法要加this,this指向实例对象
function Star(name,age) {
    this.name = name
    this.age = age
    this.sing = function(){
        .....
    }
}
const ldh = new Star('刘德华',55)//实例对象
const zxy = new Star('张学友',50)
//ldh.sing === zxy.sing 返回false,因为创建的实例对象在堆区开辟了两个不同的内存空间

原型对象(prototype):解决了上述问题。

代码演示

//this指向实例对象
function Star(name,age) {
    //公共属性写在构造函数中
    this.name = name
    this.age = age
}
//将方法直接定义在prototype对象上,公共的方法写在prototype中,Star.prototype.sing意思是在Star中追加sing方法
Star.prototype.sing = function() {
    ...
}
//此时ldh.sing === zxy.sing 返回true,因为创建的实例对象在堆区开辟共同的空间

(2)constructor属性:

含义:

(3)对象原型:__proto__:

含义:

(5)原型链※——查找规则

含义:

代码演示:

function Person(){
....
}
const ldh = new Person()
console.log(ldh instanceof Person)//返回true,判断Person.prototype是不是在ldh的原型链上

图解:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值