文章目录
  1. 1. 原型
  2. 2. 原型链
  3. 3. call/apply

原型

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

  • 提取公共属性到原型中
  • 通过后代无法修改、增加、删除原型
  • constructor(系 统自带隐藏属性浅粉色 ),构造器,返回对象的构造函数,可以手动更改
1
2
3
4
5
6
7
8
Person.prototype.LastName="ge"
function Person(){
this.Name="xuerongh"
}
var person=new Person()
console.log("原型属性"+person.LastName);//原型属性ge
console.log("自身属性"+person.Name);//自身属性xuerongh
console.log("构造器"+person.constructor);//构造器function Person(){this.Name="xuerongh"}
  • proto指向原型,可以自己修改为别的对象
1
2
3
4
5
function Person() {
//var this = {
//__proto__: Person.prototype
//}
}

原型链

proto是任何对象有的属性,proto指向原型,js中万物皆对象,proto形成的链条就是原型链。

  • Object.create(原型)
  • 绝大多数对象最终都会继承自Object.prototype (Object.create(null)不继承)
  • toString():undefined、null不能调用, 没有包装类、没有原型无法调用toString()。123.tostring()不可以调用.会当作数学符号优先计算。

javascript精度不准

call/apply

  • 改变this指向
  • call需要把实参按照形参的个数传进去,apply 需要传一个arguments
文章目录
  1. 1. 原型
  2. 2. 原型链
  3. 3. call/apply