【本周任务】
第六章
1.属性类型:数据属性和访问器属性,分别有四个特征,改变特征用
Object.defineProperty()方法。
var person = {};
Object.defineProperty(person, “name”, {
configurable: false,
value: “Nicholas”
});
alert(person.name); //“Nicholas”
delete person.name;
alert(person.name); //“Nicholas”
2.Object.defineProperties()方法,定义多个属性。两个参数,一个是要添加和修改属性的对象,另一个是属性。
3.Object.getOwnPropertyDescriptor(),读取属性特征。
4.构造函数,为了避免产生重复代码,可以采用工厂模式和构造函数模式。
function createPerson(name, age, job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
};
return o;
}
var person1 = createPerson(“Nicholas”, 29, “Software Engineer”);
var person2 = createPerson(“Greg”, 27, “Doctor”);
function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
};
}
var person1 = new Person(“Nicholas”, 29, “Software Engineer”);
var person2 = new Person(“Greg”, 27, “Doctor”);
5.原型模式,使用构造函数的 prototype 属性来指定那些应该共享的属性和方法。组合使用构造
函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法。
6.原型式继承,可以在不必预先定义构造函数的情况下实现继承,其本质是执行对给定对象的浅
复制。而复制得到的副本还可以得到进一步改造。
7.寄生式继承,与原型式继承非常相似,也是基于某个对象或某些信息创建一个对象,然后增强
对象,最后返回对象。为了解决组合继承模式由于多次调用超类型构造函数而导致的低效率问
题,可以将这个模式与组合继承一起使用。
8.寄生组合式继承,集寄生式继承和组合继承的优点与一身,是实现基于类型继承的最有效方式。
第七章
1.函数表达式不同于函数声明。函数声明要求有名字,但函数表达式不需要。没有名字的函数表
达式也叫做匿名函数。
2.在无法确定如何引用函数的情况下,递归函数就会变得比较复杂;
3.递归函数应该始终使用 arguments.callee 来递归地调用自身,不要使用函数名——函数名可
能会发生变化。当在函数内部定义了其他函数时,就创建了闭包。闭包有权访问包含函数内部的所有变量。在后台执行环境中,闭包的作用域链包含着它自己的作用域、包含函数的作用域和全局作用域。
4.函数的作用域及其所有变量都会在函数执行结束后被销毁。
5.当函数返回了一个闭包时,这个函数的作用域将会一直在内存中保存到闭包不存在为止。使用闭包可以在 JavaScript 中模仿块级作用域。
6.即使 JavaScript 中没有正式的私有对象属性的概念,但可以使用闭包来实现公有方法,而通过公
有方法可以访问在包含作用域中定义的变量。
7.有权访问私有变量的公有方法叫做特权方法。
8.可以使用构造函数模式、原型模式来实现自定义类型的特权方法,也可以使用模块模式、增强的模块模式来实现单例的特权方法。
本文深入探讨JavaScript中的属性类型,包括数据属性和访问器属性,以及如何使用Object.defineProperty()和Object.defineProperties()方法进行操作。此外,文章还介绍了构造函数、原型模式、原型式继承、寄生式继承和寄生组合式继承等继承方式,提供了实现基于类型的继承的有效途径。
7715

被折叠的 条评论
为什么被折叠?



