Javascript犀牛书 随笔(一)

2018-08-02 06:22:04来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

  阳光灿烂的一天,我背了一个小包,正打算去商场逛街,悠哉悠哉的走在路上。一只黑色的野猫跑了过去,我捏造了一个泡泡 var bubble={ }去敲打它的尾巴,它回头看了一眼我,金色的瞳孔里倒映着一串url,我又吹起一个var bubble={"mainurl":"www.treehole.com",'suburl':"come and prove yourself"}, mainurl字段正是猫眼中的光影所示,又该去会会老朋友了,我点击了这个入口的参数,瞬间头晕目眩,身体像是被撕裂了一般。

  四周一片漆黑,“好久不见,还是那么菜啊”,远处传来一声,我抬头一看,原来是JS先生。

J:怎么,new关键字用着不喜欢?好一个大周末,敲门偏要用对象直接量,你的泡泡不会吓着我的猫啊?

M:怪我咯,var a=new Object(); 这种语法太常见了,年轻人不能够这么无聊,要不然社会怎么进步呢。

J:好大的口气,臭小子你给我谦虚着点,告诉你,现在江湖上出了一个Object.create()方法,传参为null的话产生的对象连像toString那样的基础方法都没有。

M:骇,怕什么,传参为Object.prototype不就行了。这个函数的本质就是:通过任意原型创造新对象,使任何对象可继承。我早已看破,不怕不怕咯。

J:呦,一般这么自信,就是又欠练了,拿IDE过来,给我写个函数:要求是通过原型继承创建一个新对象。

M:就用刚才的Object.create()方法啊

J:那是新特性啊大哥,ECMAScript5出来3就不活了?周全考虑一下好吗

M:哦 那你等下

function inherent(p){

    if(p == null) throw TypeError();

    if(Object.create) return Object.create(p);//先判断一下Object.create方法是否存在

    

    var t=typeof p;

    if(t!=="object" && t!=="function") throw TypeError();//检查一下类型

    function f(){};

    f.prototype=p;

    return new f();

}

 

M:不知师父还满意?

J:  嗯,最后三行还算可圈可点

M:(偷笑),不是我写的好,是师父家的犀牛养的好,它怎么叫,我就怎么写呗。(随后解析这个函数)


J:那好,我问你小子,属性的两种访问方法?

M:o.pro  o["pro"] 如果属性名刚好是关键字的名字,那么很不幸,只有第二种方法可以成功

JS心里暗想,上道了上道了,马上就要掉坑里去了,又发问:第二种的学名是?

M:什么学名,我只知道你们家的那些对象宝宝都关联着数组,可以通过字符串索引

J:哈 才疏学浅了吧 来来来 小板凳呢 老夫给你们码一码。咱们家就是弱类型语言,不像那个c啊,c++啊,java啊,特别灵活,你想给对象添加一个属性的时候,不用在定义处说死,程序写到哪里加就ok了。

M学生看师父说的高兴,又问:老头儿,那你刚才问我第二种的学名是什么意思?

J:哦,学名你猜啊。我觉得第二种方法好是因为它的访问方式是字符串,还是两个字,灵活啊,这样我写程序的时候是可以做手脚的啊,比如

var addr=""

var customer={"address0":"haha","address1":"hoho","address2":"bobo"};

for(var i=0;i<4;i++)

{

    addr+=customer["address"+i]+"\n";

}

M:  拿起手机疯狂百度,然后说作为关联。。关联数组的对象!名字是作为关联数组的对象!

J: 小孩抽抽啥呢,大哥告诉你,不仅可以这么写,还可以让[]内的字符串以参数的形式动态的出现呢,怎么样,是不是强过某点访问方法一百倍?

M:以参数的形式?这不禁让我想起了for in语句。 in之前的变量打印出来是属性名。

J: 天色不早了,回去好好改改你的泡泡,下次厉害点来见我

M:不不不,我还是在这吃完晚饭再走吧 : ) 

J:...... : (


			   
			   

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:斗鱼扩展初识Chrome扩展(一)

下一篇:移动端开发鼠标点击移动的时候整个界面都在动的解决方法