JavaScriptinstanceof

//alert(test.prototype);

//alert(Object.prototype);

//alert(Function.prototype);

//alert(test.__proto__);

//alert(Object.__proto__);

//alert(Function.__proto__);

//alert(Object.prototype.__proto__);

//alert(Object.prototype.constructor);

alert(Function.prototype.__proto__);

alert(Function.prototype.__proto__.__proto__);

alert(Function.__proto__===Object.__proto__);

alert(Function instanceof Function);//true 

alert(Function instanceof Object);//true    

alert(Object instanceof Function);//true 

          

function Foo() {};

var foo = new Foo();

alert(foo instanceof Foo); // true

alert(foo instanceof Function); // false

alert(foo instanceof Object); // true

alert(Foo instanceof Function); // true

alert(Foo instanceof Object); // true

 

 


instanceof 检测一个对象A是不是另一个对象B的实例的原理是:查看对象Bprototype指向的对象是否在对象A[[prototype]]链上。如果在,则返回true,如果不在则返回false。不过有一个特殊的情况,当对象Bprototypenull将会报错(类似于空指针异常)

<script>

Function.prototype.method = function(name,func){

//mark_1

       this.prototype[name] = func;

       return this;

};

String.method("trim",function(){                         

       return this.replace(/^\s+|\s+$/g,'');

});

String.prototype.test=function()

{

       return this+"你好";

}

alert(" test ".test());

</script>

原文地址:https://www.cnblogs.com/syf/p/2709334.html