1. 静态类型与动态类型语言
静态类型:变量在编译时就已经明确了被赋值的类型。优点在于在编译时就能检测出类型不匹配的错误,另一方面是明确的变量类型可以做一些针对性的编译优化,提搞速度。缺点在于强类型增加了代码的数量,且强制的协定会降低开发体验。
动态类型:变量直到程序运行,变量被使用时才知道具体的赋值类型。优点在于开发者可以把更多精力放在业务逻辑,代码也更简洁。同样,缺点是无法保证变量的类型,程序运行时会出现一些类型错误。
2. 面向对象的JavaScript
1)多态
多态的定义是: 同一操作作用于不同的对象,会得到不同的反馈,
一段“多态”的代码:
var duck = function (){};
duck.prototype.sound=function(){
console.log("嘎嘎嘎")
}
var chicken = function (){};
chicken.prototype.sound=function(){
console.log("叽叽叽")
}
makeSound(new duck())
makeSound(new chicken())
2)继承
- js所有的对象都是由根对象Object克隆而来
- Object.prototype 的原型是null
- 通过将对象原型指向另一个对象实现的继承
- 通过Object.create(null)来创建没有原型的对象