Javascript_备忘录1

来源:互联网 发布:小程序数据分析 编辑:程序博客网 时间:2024/06/05 15:28
     最近由于在弄WEBGL的东东,由于看不懂Threejs里面的Javascript,所以看了一点Javascript的基础教程。今天要备忘的东西是这个:Wrapper Objects(我叫他是糖衣类)。

    首先看下面的例子:

var s = "test";                -->1s.len = 4;                     -->2var t = s.len;                 -->3

  我的第一反应就是t应该输出是4,结果输出其实是undefined。看了书之后,里面的原因其实是(自我理解)每当编译的时候当编译器遇到s的时候他会临时new一个类并把s作为其构造函数的输入参数:

s = new String(s);            -->4

   但是正如上面所说是临时建立的,所以当上面代码的2完成后这个类便被discard(抛弃)了。所以第3行的代码t拿到的是又一次临时新建的String类,自然没有定义它的len属性,所以t的值就是undefined啦。

   为什么叫他糖衣类,因为我很自然看这个代码就以为4,以为正确了就好像吃了糖一样开心。结果那只是一层糖衣而已,里面原来是这样苦涩。但愿考试的时候别走马观花就认为t的输出就是4了~~。

  ps:这里还要备忘的是,没想到String还有这事,豁然开朗(下面是我复制粘贴的):

var s = "hello world!";                                -->5var word = s.substring(s.indexOf(" ")+1, s.length);    -->6

Strings are not objects, though, so why do they have properties? Whenever you try torefer to a property of a string s, JavaScript converts the string value to an object as if by calling new String(s).This object inherits string methods and is used to resolve the property reference.

0 0
原创粉丝点击