第1章 面向对象的JS
静态类型语言:编译时确定变量的类型
动态类型语言:程序运行时,变量被赋值后,才确定变量类型。(JS)
利用鸭子类型思想,可以面向接口编程,而不是面向实现编程
多态:静态类型语言中实现多态,需要先向上转型,但在JS中与生俱来多态,只要有该方法即可执行
封装:使用变量作用域封装特性
1
2
3
4
5
6
7
8
9
10var myObject=(function(){
var _name='xyy';
return {
getName:function(){
return _name;
}
}
})();
console.log(myObject._name); //undefined
console.log(myObject.getName()); //xyy原型模式是一种设计模式,也是一种编程泛型
第2章 this、call、apply
在使用new构造器时,如果构造器显式地返回了一个object类型的对象,就会返回这个对象。不显示返回任何数据,或者显式返回非对象数据,则不会。
1
2
3
4
5
6
7// 想用一个短函数代替document.getElementById,但是this会指向window,所以可以如下这么写
var getId = document.getElementById;
document.getElementById = (function(func) {
return function() {
return func.apply(docuemnt, arguments);
};
})(document.getElementById);