//经典继承:已知一个对象obj,现在要创建另外一个对象newObj,对象newObj要继承obj的所有方法和属性
//分析:1.newObj.__proto__=obj 2.创建对象除了字面量的方式就是使用构造函数的方式
function create(){
functionFun(){};
Fun.prototype=obj;
returnnewFun();
}
//ES5中Object.create(obj) (IE9版本以上才支持)
//封装一个方法兼容个版本浏览器都能执行Object.create的方法
if(typeofObject.create !==‘function‘){//判断当前浏览器是否有create这个方法
Object.create=function(obj){//如果没有这个方法的话就添加一个这个方法
functionFun(){};
Fun.prototype=obj;
returnnewFun();
}
}
//数组对象
var numbers=[1,3,5];
cnosole.log(numbers.__proto__);//Array.prototype
console.log(numbers.constructor);//Array.prototype.constructor——>Array
console.log(Array.prototype.__proto__);//Object.prototype
var reg=/[0-8]/;
console.log(reg.constructor);//RegExp
console.log(reg.__proto__.__proto__);//Object.prototype
console.log(reg.__proto__.constructor);//RegExp
var str=newString("abc");
console.log(str.__proto__.__proto__);//Object.prototype
console.log(str.constructor);//String
var isMan=newBoolean(true);
console.log(isMan.__proto__);//Boolean.prototype
var number=newNumber(100);
console.log(number.__proto__.__proto__);//Object.prototype
//规律:一般来说,无论是对象字面量,还是构造函数创建的对象、内置对象,基本包装了类型的对象,2次原型查找(.__proto__)就可以找到Object.prototype
functionStudent(){}
var s1=newStudent();
console.log(s1.__proto__.__proto__);//Object.prototype
// jQuery.fn==jQuery.prototype
jQuery.fn.extend=function(obj){
for(var key in obj){
jQuery.fn[key]=obj[key];
}
return jQuery.fn;
};
原文:http://www.cnblogs.com/itlyh/p/6012101.html