课程
/前端开发
/JavaScript
/阿当大话西游之WEB组件
为什么配置写在构造函数Window里,而alert等方法写在Window的Prototype里?可不可以直接把alert等方法直接写在构造函数里?
2014-11-12
源自:阿当大话西游之WEB组件 10-1
正在回答
直接把alert等方法直接写在构造函数里的话,每个实例都需要重新创建构造函数里面的方法,而且每个实例里面的方法都不相等,这也算是构造函数模式创建对象的缺点
不知道对不对= =
用new生成实例对象是无法共享属性和方法的
var w1=new window();
var w2=new window();
他们的属性和方法是独立的 修改其中一个,不会影响到另一个 是各自本地的属性.所以写在构造函数里是对资源的浪费
而 window.prototype中放入的都是可共享的属性和方法 (原型中的) 当修改w1.prototype.属性或方法 时,w2.prototype.属性或方法也会改变
结论 : 如果写在构造函数中每次创建实例都会生成新的,实例自身的window().alert() 浪费资源 且 无法共享
如果只是把alter的函数体写在构造函数里,是可以的,只是调用方式不同了,我反而觉得会更方便一点:w.Window(cfg); 少一个alter函数调用。因为你要new Window就是为了alert嘛!
但是confirm和prompt是不能定义在构造函数里的,这样的话在构造函数外部无法调用。
举报
衡量攻城师能力是否成熟的重要指标,本课程会以弹窗组件为例