混入是一种给对象添加功能同时避免继承的强有力的方式,混入时将一个属性从一个对象 复制到另一个,从而使得接收者在不需要继承的情况下获得其功能.和继承不同,混入之后 对象无法检查属性来源.因此混入最适宜用于数据属性或小函数.…
什么是对象的数据属性?什么是对象的访问器属性?[put]方法是默认创建数据属性的,访 问器属性不包含值而是定义了一个单属性被读取时调用的函数(getter)和当一个属性被写入时 调用的函数(setter).访问器属性仅需要getter或setter中的任意一个,当然也可以两者都有. 关于javascript面向对象精要第三章对象整理如下…
本文是我翻译<JavaScript Concurrency>书籍的第六章 实用的并发,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并发编程方面的实践. 完整书籍翻译地址:https://github.com/yzsunlei/javascript_concurrency_translation .由于能力有限,肯定存在翻译不清楚甚至翻译错误的地方,欢迎朋友们提issue指出,感谢. 在上一章中,我们大致学习了Web workers的基本…
什么是对象? 对象是一种复合值,每一个属性都是都是一个名/值对.原型式继承是javaScript的核心特征. 对象常见的用法有,create\set\query\delete\test\enumerate. 对于对象的属性名可以是包括空白在内的任意字符串.但是不能存在相同的属性名. 对象的属性特性有以下三个 1 writeable attribute  表明属性是否可以设置 2 enumerable attribute 表是否可以枚举 3 configurable attribute 表是否可以…
第六章 面向对象的程序设计 一.理解对象 1.属性类型: ECMAScript中有两种属性:数据属性和访问器属性. (1)数据属性: 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有4个可以描述其行为的特性: [[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. [[Enumerable]]:表示能否通过for-in循环返回属性.像前面例子中那样直接在对象上定义的属性,它们的这个特性默认值为t…
一.理解对象 二.创建对象      1. 工厂模式      2. 构造函数模式      3. 原型模式      4. 组合使用构造函数模式和原型模式[使用最广泛]      5. 动态原型模式  6. 寄生构造函数模式      7. 稳妥构造函数模式 三.继承      1. 原型链      2. 借用构造函数      3. 组合继承[最常用]      4. 原型式继承      5. 寄生式继承      6. 寄生组合式继承 一.理解对象 ECMAScript中有两种属性:数…
对象 //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. 2.对象也可以看做是属性的无序集合,每个属性都是一个名值对. 3.属性名是字符串,因此我们可以把对象看成是从字符串到值的映射. 4.这种基本数据结构还可以叫做:散列(hash),散列表(hashtable),字典(dictionary),关联数组(associative array).   属性除了…
6.6 属性getter和setter 对象属性是由名字.值和一组特性(attribute)构成的. getter和setter定义的属性称做"存取器属性"(accessor propterty) var o={ data_prop:value, get accessor_prop(){函数体}; set accessor_prop(a)  {函数体}; } 读o.accessor_prop 写o.accessor_prop=value; 6.7 属性的特性 数据属性的4个特性分别是它…
6.3 删除内容 delete运算符可以删除对象的属性. delete运算符只能删除自有属性,不能删除继承属性. delete表达式删除成功或没有任何副作用时,它返回true. 6.4 检测属性 用in\hasOwnProperty\propertyIsEnumberable\!== in 对于对象的自有属性或继承属性中包含有这个属性的返回true. hasOwnProperty方法用来检测 给定的名字是否是对象的自有属性 propertyIsEnumerable()是hasOwnPropert…
通过原型 继承创建一个新对象,对于这一个函数的有说不出的感觉,看看语句都很简单,深层次的东西就是不知道 function inherit(p) { if(p == null)  throw TypeError(); if(Object.create) return Object.create(p); vart t=typeof p; if(t !== "object" && t !== "function") throw TypeError(); f…