js高级(二)

原型

原型的作用:
1、节省内存空间
2、实现数据共享

构造函数、实例、原型三者之间的关系 (重点)
1、任何函数(不包括箭头函数)都有prototype属性,它本身是一个对象。
2、构造函数也是函数,也有prototype属性,我们称之为原型
3、prototype属性上面的属性和方法可以被实例化对象所继承
4、任何对象都有constructor属性,实例化对象的constructor属性指向构造函数
5、原型也是对象,也有constructor属性,原型constructor属性指向构造函数
6、实例化对象上面有个__proto__属性,他是一个指针,指向构造函数的原型

this指向:
实例化对象调用原型上面的方法,this指向实例化对象
构造函数原型直接调用方法 this指向构造函数原型

除箭头函数外,其他函数this指向调用它的地方
箭头函数this指向声明它的地方

实例化对象的查找规则

先从自身对象上面查找,本身如果没有,在原型上面进行查找,依次向下查找,如果都没有打印undefined或者报错

字面量创建原型:获取不到,地址不一样


function Car(name) {
        this.name = name
        // this.color = color
    }
    let car_1 = new Car('小米')

    // Car.prototype.size = '10000'

    Car.prototype = {
        constructor: Car,
        color: 'red'
    }

    // Car.prototype.color = '粉色'
    // Object.prototype.color = 'green'
    console.log(car_1);
    console.log(Car.prototype.constructor);

原型链的最终指向

原型链的最终指向:null (重点)

var car_1 = new Car('小米')
    Car.prototype.color = 'red'
    console.log(car_1);
    // console.log(Car.prototype);
    console.log(car_1.__proto__ == Car.prototype);
    Object.prototype.name = 'zs'
    console.log(car_1.__proto__.__proto__ == Object.prototype);
    console.log(car_1.__proto__.__proto__.__proto__);  // null 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值