构造函数构建类
function Person(name,age){
this.name=name
this.age=age
this.say=function(){
console.log('我是'+this.name)
}
}
var p1=new Person('张三',18)
var p2=new Person('李四',20)
构造函数object
原型和原型链
1万物皆对象,万物皆空 (对象最终指向null)
2原型:保存所有子对象的共有属性值和方法的父对象。
原型链:是各级子对象的_proto_属性连续引用形成的结构。
3.三个属性:_proto_,constructor,prototype
_proto_下划线开始下划线结束都是js内部属性
原型和原型链
所有的对象都会携带proto属性 。proto属性都会指向构造函数的原型对象
原型对象上的constructor又会指回构造函数
原型:保存所有子对象的共有属性值和方法的父对象
原型连:由各级子对象的_proto_属性连续引用形成的结构
三个属性 _proto_ constructor prototype
原型和原型链
方式:1.万物皆对象,万物皆空
2.两个定义:原型:保存所有子对象的共有属性值和方法的父对象
原型链:由各级子对象的__proto__属性连续引用行成的结构
3.三个属性:__proto__,constructor,prototype
当函数创建的时候就会携带上一个prototype属性,这个属性指向prototype对象,也就是原型对象
原型对象携带constrcuctor
实例化会携带__proto__,并且是所有js对象都会携带,都是js内部属性
挂载在函数内部的方法,实例化对象内部回复制构造函数的方法
挂载在原型上的方法,不会去复制.
挂载在内部和原型上的方法都是可以通过实例去调用的
一般来说,如果需要访问构造函数内部的私有变量,我们可以定义在函数内部,其它情况我们可以定义在函数的原型上
总结
1.所有对象都会携带p1.__proto__,p1.__proto__===Person.prototype
2.Person.prototype.constructor===Person
构造函数构建类
函数对象
定义:主要是通过Function对象创建的
普通对象
定义:主要是通过object对象创建的
通过构造函数创建对象
什么是原型,什么是原型链。 __proto__、prototype、constructor
原型和原型链
方式:1,2,3
1:一句话 万物皆对象,万物皆空
2: 二个定义:原型:保存所有子对象的共有属性值和方法的父对象、
原型链:由各级子对象的__proto__属性连续引用形成的结构
3:三个属性:__proto__、constructor、prototype
挂载在函数内部的方法,实例化对象内部会复制构造函数的方法
挂载在原型上的方法,不会去复制。
挂载在内部和原型上的方法都是可以通过实例去调用的
一般来说,如果需要访问构造函数内部的私有变量,我们可以定义在函数内部,其他情况我们可以定义在函数的原型上
总结:
1、所有对象都会携带p1.__proto__
2、实例的原型指向构造函数的原型
原型和原型链
原型链
万物皆对象