JavaScript 面向对象的常用方法、属性总结

person1.cunstructor == Person:构造函数的实例的指向 (true/false)

person1 instanceof Object:检测对象类型是否属于object(true/false)

person1 instanceof Person:检测对象类型是否属于构造函数(true/false)


var
arr = []; arr instanceof Array:(true) //标识数组


1、标识构造函数对象实例的类型

对象实例.constructor == 构造函数对象

 1 function Person(name, age, job){ 
 2  this.name = name; 
 3  this.age = age; 
 4  this.job = job; 
 5  this.sayName = function(){ 
 6  alert(this.name); 
 7  }; 
 8 } 
 9 var person1 = new Person("Nicholas", 29, "Software Engineer"); 
10 var person2 = new Person("Greg", 27, "Doctor");
构造函数源码

在前面例子的最后,person1 和 person2 分别保存着 Person 的一个不同的实例。这两个对象都有一个 constructor(构造函数)属性,该属性指向 Person,如下所示。

1 alert(person1.constructor == Person); //true 
2 alert(person2.constructor == Person); //true

对象实例 instanceof 对象

提到检测对象类型 instanceof 操作符更可靠,我们创建的所有对象既是object实例也是构造函数的实例。可以使用instanceof来验证

1 alert(person1 instanceof Object); //true 
2 alert(person1 instanceof Person); //true 
3 alert(person2 instanceof Object); //true 
4 alert(person2 instanceof Person); //true 

创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型;而这正是构造函数模式胜过工厂模式的地方。验证new操作符的实例对象和传统object创建方式的类型归属:

var obj = {
    
    name:'s',
    age:'s',
    sex:'男'
}
alert(obj instanceof Object); // true
alert(obj instanceof Person); // false 

//字面量方式创建的对象obj只属于object,并不属于其他对象,更没有办法让他具有特定类型。对比看来是不是构造函数的方式好的很多。

猜你喜欢

转载自www.cnblogs.com/wangweizhang/p/10376318.html