Javascript_备忘录1

     最近由于在弄WEBGL的东东,由于看不懂Threejs里面的Javascript,所以看了一点Javascript的基础教程。今天要备忘的东西是这个:Wrapper Objects(我叫他是糖衣类)。

    首先看下面的例子:

var s = "test";                -->1
s.len = 4;                     -->2
var 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!";                                -->5
var 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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值