原型、原型链,call/apply

渡一领跑计划:102-Day10

原型、原型链,call/apply

1.原型

      a) 原型是祖先;
      b) 原型的增删改查


Car.prototype.height = 1400;
Car.prototype.width = 4900;
Car.prototype.name = "BMW";
function Car(color) {
	this.color = color
}
var car = new Car("red");

1.增:
Car.prototype.XXX = XXX
# 只能通过上述方法增加,使用下述方法增加,只会在new出的对象上增加属性
car.XXX = XXX

2.删:
delete Car.prototype.XXX
# 同理只能通过上述方法进行删除。

3.改:
Car.prototype.XXX = XXX
# 与上述同理

4.查:
car.XXX
# 可直接在new出的对象上查询

      c) 什么时候用原型?
        固定不变的属性,无需通过传参来赋值给this的统统加到原型上。如车的宽高等
      d) 原型的”_proto_“可手动更换


var obj = {};
Car.__proto__ = obj;
function Car() {
	...
}
console.log(Car.__proto__)

>>> {}

2.原型链

      原型链如作用域链一样,呈链式,因此被称为原型链

Grand.prototype.lastName = "Gao";
function Grand() {
	...
}

var grand = new Grand();

Father.__proto__ = grand;
function Father() {
	this.name = "Chuck"
}

var father = new Father();

Son.__proto__ = father;
function Son() {
	this.age = 18;
}
var son = new Son();

如上述代码所示,原型链即为爷爷、父亲、儿子的关系,儿子能向爹要东西,也可以向爷爷要东西,但是爹只能跟爷爷要东西,而不能跟儿子要东西。

3.细碎知识点

  • 绝大多数对象的最终原型:Object.prototype,由Object.create(null) 创造的对象不继承Object.prototype
  • 可计算范围:小数点前后16位
  • call, apply均用作改变this指向,唯一的区别在于,传参方式不同,call的第一个参数留给替换this的东西,其他构造函数依次往后推一。apply的第一个参数同样为替换this的东西,但构造函数的参数用数组的方式传入,因此总共有两个参数。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值