@@ -166,9 +166,11 @@ JSON.parse('{"a":10."b":20}')
166166* 原型链
167167* instanceof
168168#### 构造函数
169- * 普通的函数就像是按步骤执行的动作,而构造函数更像是可更改零件的木偶,普通函数可以直接调用,但是构造函数需要new
170- * 因为构造函数也是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象等于全局this对象
169+ * 自己的想法
170+ * ` 普通的函数就像是按步骤执行的动作,而构造函数更像是可更改零件的木偶,普通函数可以直接调用,但是构造函数需要new `
171+ * ` 因为构造函数也是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象等于全局this对象 `
171172* 扩展` 实例和对象的区别,从定义上来讲:1、实例是类的具象化产品,2、而对象是一个具有多种属性的内容结构。 `
173+
172174``` JavaScript
173175funciton Foo (name ,age ){
174176 this .name = name;
@@ -179,18 +181,19 @@ funciton Foo(name,age){
179181var f = new Foo (' zhangsan' ,20 ); // 实例化对象
180182// var f1 = new Foo('lisi',22) //创建多个对象
181183```
184+
182185#### 构造函数-扩展
183186* ` var a = {} ` 其实是 ` var a = new Object() ` 的语法糖
184187* ` var a = [] ` 其实是 ` var a = new Array() ` 的语法糖
185188* ` function Foo(){...} ` 其实是 ` var Foo = new Function(...) `
186189* 使用 ` instanceof ` 判断一个函数是否是一个变量的构造函数
187- * 如果想判断一个变量是否为“数组”:变量 instanceof Array
190+ * 如果想判断一个变量是否为“数组”:变量 ` instanceof Array `
188191
189192## 01-05
190193### 原型规则和示例
191- *
192194* 5条原型规则
193195* 原型规则是学习原型链的基础
196+ #### 第1条
194197* 所有的引用类型(数组、对象、函数),都具有对象特质、即可自由扩展属性(除了“NULL”以外)
195198``` JavaScript
196199var obj = {}; obj .a = 100 ;
@@ -199,25 +202,55 @@ function fn(){
199202 fn .a = 100 ;
200203}
201204```
202- #### ` __proto__ `
205+ #### 第2条
203206* 所有的引用类型(数组、对象、函数),都有一个` __proto__ ` (隐式原型)属性,属性值是一个普通的对象
204207``` JavaScript
205208console .log (obj .__proto__ );
206209console .log (arr .__proto__ );
207210console .log (fn .__proto__ );
208211```
209- #### ` prototype `
212+ #### 第3条
210213* ` prototype ` 解释为JavaScript开发函式库及框架
211214* 所有的函数,都有一个` prototype ` (显示原型)属性,属性值也是一个普通对象。
212215``` JavaScript
213216console .log (fn .prototype );
214217```
215- #### ` __proto__ ` 与 ` prototype `
218+ #### 第4条
216219* 所有引用类型(数组、对象、函数),` __proto__ ` 属性值指向它的构造函数的` prototype ` 属性值
217220``` JavaScript
218221console .log (obj .__proto__ === Object .prototype );
219222```
223+ #### 第5条
220224* 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的` __proto__ ` (即它的构造函数` prototype ` )中寻找
225+ ``` JavaScript
226+ // 构造函数
227+ function Foo (name ,age ){
228+ this .name = name;
229+ }
230+ Foo .prototype .alertName = function () {
231+ alert (this .name );
232+ }
233+ // 创建示例
234+ var f = new Foo (' zhangsan' )
235+ f .printName = function () {
236+ console .log (this .name );
237+ }
238+ // 测试
239+ f .printName ();
240+ f .alertName ();
241+ ```
242+ * this
243+ #### 循环对象自身属性
244+ ``` JavaScript
245+ var item;
246+ for (item in f) {
247+ // 高级浏览器已经在for in 中屏蔽了来自原型的属性
248+ // 但是这里建议大家还是加上这个判断,保证程序的健壮性
249+ if (f .hasOwnProperty (item)) {
250+ console .log (item);
251+ }
252+ }
253+ ```
221254
222255
223256
0 commit comments