js面向对象的一些属性、方法

首先了解一下原型链:

原型链 : 实例对象与原型之间的连接,叫做原型链

原型链的最外层 : Object.prototype

1.hasOwnProperty : 看是不是对象自身下面的属性.用法如下:

var arr = [];
arr.num = 10;
Array.prototype.num1 = 20;

//alert( arr.hasOwnProperty('num') ); //true

alert( arr.hasOwnProperty('num1') ); //false

2.constructor : 查看对象的构造函数,用法如下:


function Aaa(){
}

var a1 = new Aaa();

alert( a1.constructor ); //Aaa

var arr = [];
alert( arr.constructor == Array ); //true

当写了function Aaa(){

}这个构造函数是,会自动生成Aaa.prototype.constructor = Aaa;所以construcor是每一个函数都有的。

二hasOwnProperty则是通过原型链在Object.prototype下面找到的

var a1 = new Aaa();
alert( a1.hasOwnProperty == Object.prototype.hasOwnProperty ); //true*/

3.instanceof : 对象与构造函数在原型链上是否有关系,用法如下:

function Aaa(){
}

var a1 = new Aaa();

//alert( a1 instanceof Object ); //true


var arr = [];

alert( arr instanceof Array );

4.toString() : 吧对象转换成字符串,系统对象下面都是自带的 , 自己写的对象都是通过原型链找object下面的,所以

var arr = [];
alert( arr.toString == Object.prototype.toString ); //false

function Aaa(){
}
var a1 = new Aaa();
alert( a1.toString == Object.prototype.toString ); //true

 利用toString判断一个对象是不是数组 :

var arr = [];

alert( Object.prototype.toString.call(arr) == '[object Array]' );

原文地址:https://www.cnblogs.com/toodeep/p/4472664.html