《JavaScript语言精粹》读书笔记

第三章:对象

//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个隐藏属性:函数的上下文(包括函数实参、函数形参、内嵌函数、内部变量等)和实现函数行为的代码
Object

  1. proto: Object
  2. constructor: function Object()
  3. hasOwnProperty: function hasOwnProperty()
  4. isPrototypeOf: function isPrototypeOf()
  5. propertyIsEnumerable: function propertyIsEnumerable()
  6. toLocaleString: function toLocaleString()
  7. toString: function toString()
  8. valueOf: function valueOf()

反射

检查对象并确定对象有什么属性是很容易的事情,只要试着去检索该属性并验证取得的值,typeof操作符对确定属性的类型很有帮助。
1)检查属性的类型:typeof

typeof flight.number    //'number'
typeof flight.status    //'string'
typeof flight.manifest  //'undefined'

请注意原型链中的任何属性也会产生一个值:

typeof flight.toString     //'function'
typeof flight.constructor  //'function'

2)检查属性:hasOwnProperty

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】

this在JS中有4中调用模式:
①方法调用模式:当一个函数被保存为对象的一个属性时,就称它是一个方法。当一个方法被调用时,this被绑定到该对象。
②函数调用模式:当一个函数并非一个对象的属性时,它就是被当做一个函数来调用。这个模式下的this被绑定到全局对象window,函数实际是window的属性。
③构造器调用模式:如果在一个函数前面带上new来调用,则背地里会创建一个连到该函数prototytpe成员的新对象,同时this会被绑定到那个新对象上。
④apply调用模式:允许选择this的值,apply第一个参数绑定给this的值,第2个参数是传给调用函数的参数数组。

第五章:继承

继承的两个作用:1、代码重用;2、类型系统规范。

当一个函数对象呗创建时,Functinon构造器产生的函数对象会运行类似下面的代码:


this.prototype={constructor:this};

新函数对象被赋予一个prototype属性,其值是包含一个constructor属性且属性值为该新函数的对象。该prototype对象是存放继承特征的地方。

posted @ 2015-05-18 11:30  青青flye  阅读(210)  评论(0编辑  收藏  举报