JavaScript 函数对象的prototype属性和this属性

函数对象

函数也是对象的一种,函数执行的时候会创建 this 和 prototype 属性

一、this 属性(对象类型)

二、prototype 属性(对象类型)

  • prototype 上定义的属性和方法可以被对象实例 共享

三、关于对象属性常见的方法

3.1、delete 实例.属性:delete person1.age

  • 删除实例的属性(this对象里的)
// delete 删除的是 实例的属性
function Person(){
  this.age = 18;
}
Person.prototype.sex = 'female';
var person1 = new Person();
delete person1.age;
delete person1.sex;
console.log(person1);// {}
console.log(Person.prototype.sex);//female

3.2、in 操作符

  • 判断对象 是否存在 某属性,查找范围是:实例 + 原型
  • 存在 返回 true ,反之 false ;
function Person(){
  this.age = 18;
}
Person.prototype.sex = 'female';
var person1 = new Person();
console.log('age' in person1); //true
console.log('sex' in person1); //true
console.log('name' in person1); // false

3.3、for…in 遍历对象属性

  • 属性范围:实例属性+ 原型属性
function Person(){
  this.age = 18;
}
Person.prototype.sex = 'female';
var person1 = new Person();
for(var item in person1){
  console.log(item);
}

//打印 age sex

3.4、hasOwnProperty() 判断某个属性是否在实例上

  • 在实例上 返回 true
function Person(){
  this.age = 18;
}
Person.prototype.sex = 'female';
var person1 = new Person();
console.log(person1.hasOwnProperty('age')); //true
console.log(person1.hasOwnProperty('sex')); //false
console.log(person1.hasOwnProperty('name')); //false

3.5、Object.keys() 获取实例上的属性数组

function Person(){
  this.age = 18;
}
Person.prototype.sex = 'female';
var person1 = new Person();
person1.weight = 50;
console.log(Object.keys(person1)); // [ 'age', 'weight' ]
上一篇:JAVA面向对象01——认识类与对象


下一篇:iOS底层原理(二)KVO和KVC