javascript犀牛--读书零碎

o'reilly 犀牛


-------------------------------------------------------------------------------

获取对象(比如 var o={x:1,y:2})的信息有一下方法:

  1. 对变量应用 " .constructor"属性或者 " typeof "方法也可以获得关于对象的一些信息;
  2. 反射:利用 for (.. in ..) 实现"反射";有意思的是数组和对象都能把 "." 和 "[]"当作操作符
style

 ------------------------------------------------------------------------------

 临时对象?对象包装器:

 

      对象环境 就是需要把一个东西当作有属性有方法的能自我描述的应用上下文,像字符串、数字、boolean三种类型都有所谓的对象包装器,而字符串出现对象环境比较常见;原始字符串值遇到对象环境时,比如求字符串的长度或者子字符串时就会临时创建一个string类来使用,用完了就被抛弃;相应string对象遇到非对象环境时也会临时创建一个字符串值来操作,比如需要两个字符串用 " + "号连接的时候。

 

--------------------------------------------------------------------------------

 Eval()函数:

 

      如果参数不是字符串 则 直接返回参数;如果是字符串,并且字符串作为脚本执行后的返回结果是一个值 则 返回此值,否则 返回undefined;对于对象声明的(比如{c:hello})如果加上"("和")"则返回object。

       如何在全局环境使用局部变量呢?这个要求实在是过分,可能有这样的需求环境,比如wangyij说的情况;解决方法如下:

X2.Eval()

 ---------------------------------------------------------------------------------

 js变量的作用域:

 

      看zhangljerry写的《关于js变量的作用域 》,大致总结一下;名字很多 参考其他语言可以减少大脑负担,从javascript源码的词法结构来说:

 

 变量称呼                        声明方式                                     注意事项

 

局部变量                        {}内有效的,var声明的;                 未赋值则返回undefined、不存  在块儿级的变量;


全局变量                        {}内没用var声明的,全局用var声明的; 

 

类变量                           类内的属性、方法都是;                   没什么;

 

私有变量                        类内用var声明的变量、匿名函数引用;   比如var func1=function{}、私有方法不能操作非私有变量;

 

实例变量                        在实例化以后通过"."操作符新建的变量; 只对该实例可见;

 

静态变量                        属于类的,当然也属于它的实例、用this声明的;比如this.name='hzq';

 

新的理解或者说新的解释就是: 全局变量是全局对象的一个属性,而局部变量是特殊的调用对象的属性;

----------------------------------------------------------------------------------

关于函数的----隐藏的Argument对象、神奇的prototype属性

 

     函数调用时可以传递的参数不必拘泥于形参,而非形参的参数值可以通过Argument暂时作为数组时  用下标取得;另外Argument的属性callee是对函数自身的调用,可用于匿名函数,而length属性反应了实际传递参数的个数,Argument.callee.length则是形参的个数;

     每个函数都有call和apply()两个方法,如:function f(x,y){};var c=new bject();f.call(c,x,y);或者f.apply(c,[x,y]);

     prototype是一个类的构造函数被new操作符使用时产生的 对一个对象的引用 作为该构造函数的属性;通过在prototype引用的对象上定义所有该类的实例都拥有的方法和常量值,避免了实例变量和实例方法的大规模复制;

-------------------------------------------------------------------------------------

     用函数做参数在数组的sort()方法里可以,我想javascript这样没有绝对类型的语言 这种现象会很普遍。

     直接量和构造函数的概念、区别;

    

posted @ 2008-08-13 14:46  那只狐狸  阅读(490)  评论(0编辑  收藏  举报