一、构造属性
所有原型对象自动获得一个名为constructor的属性,指回相关联的构造函数
function Person(name,age){this.name = namethis.age = age}var p = new Person("cheng",20)console.log(p.constructor);console.log(p.constructor == Person); // truevar arr = [1,2,3]console.log(arr.constructor == Array); // true
二、给原型添加属性(直接量形式)
function Person(name,age){this.name=name;this.age=age}// 以(字面量)对象的形式给原型对象添加属性Person.prototype={sayName:function(){console.log(this.name)},sayAge:function(){console.log(this.age)}}// 问题:就是我们以直接量(对象)的形式,给原型对象添加属性的时候,它的constructor会指向objectvar p=new Person("xuan",18)console.log(p) // Person {name: "xuan", age: 18}console.log(p.constructor==Person) //false
问题:就是我们以直接量(对象)的形式,给原型对象添加属性的时候,它的constructor会指向object
三、重置
function Person(name,age){this.name=name;this.age=age}// 以(字面量)对象的形式给原型对象添加属性Person.prototype={// 重置constructor属性constructor:Person,sayName:function(){console.log(this.name)},sayAge:function(){console.log(this.age)}}// 问题:就是我们以直接量(对象)的形式,给原型对象添加属性的时候,它的constructor会指向object// 所以就需要重置constructor属性var p=new Person("xuan",18)console.log(p) // Person {name: "xuan", age: 18}console.log(p.constructor==Person) //true
重置constructor属性
四、公有属性和私有属性
- 公有属性在原型对象上
- 私有属性 通过this关键字添加的
hasOwnProperty 判断属性是私有还是公有的
function Person(name, age) {this.name = name;this.age = age}// 以(字面量)对象的形式给原型对象添加属性Person.prototype = {// 重置constructor属性constructor: Person,sayName: function () {console.log(this.name)},sayAge: function () {console.log(this.age)}}var p = new Person("xuan", 18)// 公有属性在原型对象上// 私有属性 通过this关键字添加的// hasOwnProperty 判断属性是私有还是公有的console.log(p.hasOwnProperty("name")) // true 私有的console.log(p.hasOwnProperty("sayName")); // false 公有的
