上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
摘要: js对象的核心是一个字符串属性名与属性值的映射表。使用对象实现字典易如反掌,字典是可变长的字符串与值的映射集合。 for...in js提供了枚举一个对象属性名的利器--for...in循环。var dict={zhangsan:34,lisi:24,wangwu:62}; var people=[]; for(var name in dict){ people.push(name+":"+d 阅读全文
posted @ 2016-06-23 09:34 脚后跟着猫 阅读(516) 评论(0) 推荐(4) 编辑
摘要: 对象是js中的基本数据结构。对象在js语言编码中也随处可见,比如经常会用到的函数,也是一个Function构造函数,Function.prototype原型对象。每当声明一个函数时,都会继承Function.prototype里的方法和属性。当使用"1,2,3".split(',')时,实际是把"123"先转化为String对象,然后调用String对象的原型方法。这些初期时只会用用,但它里... 阅读全文
posted @ 2016-06-21 10:41 脚后跟着猫 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 41条对违反抽象原则行为的讨论之后,下面聊一聊终极违例。由于对象共享原型,因此每一个对象都可以增加、删除或修改原型的属性。这个有争议的实践通常称为猴子补丁。 猴子补丁示例 猴子补丁的吸引力在于其强大。数组缺少一个有用的方法吗?你自己就可以增加它。Array.prototype.split=function(i){ return [this.slice(0,i),this.slice(i)];... 阅读全文
posted @ 2016-06-21 10:34 脚后跟着猫 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 对象原型链 一个对象给其使用者提供了轻量、简单、强大的操作集。使用者与一个对象最基本的交互是获取其属性值和调用其方法。这些操作不是特别在意属性存储在原型继承结构的哪个位置。随着时间推移,实现对象时可能会将一个属性实现在对象原型链的不同位置,但是只要其值保持不变,那么这些基本操作的行为也不变。原型是一种对象行为的实现细节。 内省机制 js提供了便利的内省机制来检查对象的细节。Object.proto... 阅读全文
posted @ 2016-06-21 10:33 脚后跟着猫 阅读(285) 评论(0) 推荐(0) 编辑
摘要: ECMAScript标准库里配备了许多重要的类,如Array,function,以及Date等。扩展这些类生成子类可以方便完成很多工作,但它们的定义具有很多特殊的行为,所以很难写出行为正确的类。 Array示例 一个操作文件系统的库可能希望创建一个对象的目录,该目录继承了数组的所有行为。function Dir(path,entries){ this.path=path; for(var . 阅读全文
posted @ 2016-06-21 10:31 脚后跟着猫 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 这个时候,首先调用Alien构造函数运行,创建一个空对象alien,把构造函数中的this绑定到alien上,然后运行Actor.call(alien,scene,0,0)产生了alien.id=++Actor.nextID,然后添加其它私有属性,但当又遇到id这个属性的时候,alien.id=++Alien.nextID,把上面从基类构造函数产生的id进行了修改。这个时候,id的属性就产生了歧义。 阅读全文
posted @ 2016-06-17 16:45 脚后跟着猫 阅读(251) 评论(0) 推荐(1) 编辑
摘要: 当初始化SpaceShip原型时,我们尚未创建任何能作为第一个参数来传递的场景。并且SpaceShip的原型加入到场景的注册表中,而这绝不是我们想做的。这是一种使用子类时常用的方法。应当仅仅在子类构造函数中调用父类构造函数,而不是当创建子类原型时调用它。 一旦创建了SpaceShip的原型对象,我们就可以向其添加所有的可被实例共享的属性,包含一个用于在场景的图像数据表中检索的type名,以及一些太空飞船的特定方法。 阅读全文
posted @ 2016-06-17 09:37 脚后跟着猫 阅读(972) 评论(0) 推荐(1) 编辑
摘要: this变量是以不同的方式绑定的。每个函数都有一个this变量的隐式绑定。该this变量的绑定值是在调用该函数时确定的。对于一个词法作用域的变量,可以通过查找显式命名的绑定名来识别出其绑定的接收者。但this变量是隐式地绑定到最近的封闭函数。因此,对于CSVReader.prototype.read函数,this变量的绑定不同于传递给lines.map回调函数的this绑定。 阅读全文
posted @ 2016-06-16 17:21 脚后跟着猫 阅读(354) 评论(2) 推荐(0) 编辑
摘要: 共享有状态的数据可能会导致错误。通常在一个类的多个实例之间共享方法是安全的,因为方法通常是无状态的,这不同于通过this来引用实例状态。(因为方法调用的语法确保了this被绑定到实例对象,即使该方法是从原型中继承来的,共享方法仍然可以访问实例状态)一般情况下,任何不可变的数据可以被存储在原型中从而被安全地共享。有状态的数据原则上也可以存储在原型中,只要你真正想共享它。在原型中最常见的数据是方法,而每个实例的状态都存储在实例对象中。 阅读全文
posted @ 2016-06-16 09:24 脚后跟着猫 阅读(418) 评论(0) 推荐(1) 编辑
摘要: 每个环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。在WEB浏览器中全局环境关联的是window对象。某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。 阅读全文
posted @ 2016-06-15 09:20 脚后跟着猫 阅读(1138) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
返回
顶部