//1.定义一个方法 method Function .prototype.method=function(name, func){ this.prototype[name]=func; return this; } //2.给Object增长一个create方法,这个方法建立一个使用原对象做为其原型的新对象 Object.create=function(o){ var F=function(){}; F.prototype=o; return new F(); } //继承 Function.method(‘inherits’, function(Parent){ this.prototype=new Parent(); return this; });
1)JS中的对象是name/value对的集合并拥有一个连到原型对象的隐藏链接。
2)对象字面量产生的对象链接到Object.prototype;
3)引用:对象经过引用来传递,他们永远不会被复制。
4)函数就是对象。
5)函数对象链接到Function.prototype(该原型的对象自己链接到Object.prototype)。
6)函数在建立的时候会附加2个隐藏属性:函数的上下文(包括函数实参、函数形参、内嵌函数、内部变量等)和实现函数行为的代码
Objectjavascript
检查对象并肯定对象有什么属性是很容易的事情,只要试着去检索该属性并验证取得的值,typeof操做符对肯定属性的类型颇有帮助。
1)检查属性的类型:typeofjava
typeof flight.number //'number' typeof flight.status //'string' typeof flight.manifest //'undefined'
请注意原型链中的任何属性也会产生一个值:数组
typeof flight.toString //'function' typeof flight.constructor //'function'
2)检查属性:hasOwnPropertyapp
flight.hasOwnProperty('number') //true flight.hasOwnProperty('constructor') //false
1)除了声明时定义的形式参数,每一个函数还接收2个附加的参数:this和arguments
2)一个函数总会返回一个值,若是没有指定返回值,则返回undefined。若是函数调用时在前面加上了new前缀,且返回值不是一个对象,则返回this。
函数字面量:能够经过函数字面量来建立:
包括4个部分:
1函数
//建立一个名为add变量,并用来把两个数字相加的函数赋值给它 var add=function(a,b){ return a+b; }
this在JS中有4中调用模式:
①方法调用模式:当一个函数被保存为对象的一个属性时,就称它是一个方法。当一个方法被调用时,this被绑定到该对象。
②函数调用模式:当一个函数并不是一个对象的属性时,它就是被当作一个函数来调用。这个模式下的this被绑定到全局对象window,函数实际是window的属性。
③构造器调用模式:若是在一个函数前面带上new来调用,则背地里会建立一个连到该函数prototytpe成员的新对象,同时this会被绑定到那个新对象上。
④apply调用模式:容许选择this的值,apply第一个参数绑定给this的值,第2个参数是传给调用函数的参数数组。this
继承的两个做用:一、代码重用;二、类型系统规范。prototype
当一个函数对象呗建立时,Functinon构造器产生的函数对象会运行相似下面的代码:code
this.prototype={constructor:this};
新函数对象被赋予一个prototype属性,其值是包含一个constructor属性且属性值为该新函数的对象。该prototype对象是存放继承特征的地方。对象