没有类,可以直接用对象。那么怎么定义对象呢?
prototype
其实就是类定义
__proto__
其实就是实例的定义
JS创建对象的几种方式
- 属性直接在构造函数中定义
- 函数在
prototype
中定义
function Parent(){
this.name="李小龙";
this.age=32;
};
Parent.prototype.lev=function() {
return this.name;
};
var x =new Parent();
alert(x.lev());
- 当然平时用的时候,可以直接
new
一个Object
;属性直接加,方法还是加到prototype
上。 - JS在对象和类上面的做法相对于静态语言来说应该是简化了,不过还是有借鉴的影子。
- 比如类和对象的关系,类是模板,对象是实例。这里将重点放在了对象上,类只是放在了一个隐藏属性
prototype
上,弱化了这种关系。 - 这样做,其实是弱化继承,推荐用组合的方式解决问题
- 所谓的“全局”,其实就是在一个
window
对象的内部,这跟当年的c的静态全局变量起到差不多的作用---隔离,文件内共享 - 推荐用函数来解决问题,就“全局”函数好了,方便。一定要挂在某个对象下面,就要用到
prototype
,能不用就不用。 - 类定义其实都是window对象的内部类,所以将函数加入对象意义不是很大。还是那句话,尽量用组合,不要用继承。
- 对象定义,应该降格为字典来对待。用对象,可以用点语法,访问方便很多。不过JS的重点还是方便讲对象转字典,转JSON,方便网络传输。这个和静态语言的强调Model还是有侧重点区别的
- 都是对象,包括数字也是对象;不过编程思维用过程和组合,少用面向对象的继承方式。
- 这里主要用组合与过程,实现简单页面的功能。至于面向对象的设计,思路要变一变。