原型模式 初学JS,今天看了下设计模式,也看大致懂了几种模式之间的区别,只想问一下各位大牛,在那种情况用构造函数方式,那种情况用原型方式,最好有例子,简单的例子也可以,附上说明 。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function Person(name,age,sex) { this.name = name; this.age= age; this.sex = sex;}Person.prototype.getName = function() { return this.name;};Person.prototype.setName= function(name) { this.name = name;}... 对此。如果你觉得这样的封装不够好的话可以这样做function Person(name,age,sex) { this.name = name; this.age= age; this.sex = sex; if(typeof Person._init == "undefined") { Person.prototype.getName = function() { return this.name; }; Person.prototype.setName= function(name) { this.name = name; } ... } Person._init = true;} 有一点不是很明白,在使用prototype的时候,提到new2个对象,修改其中的一个,另一个对象也会被修改,那这个在实际应用中应该会有影响吧。 好像还有一种 var a = new Object(); a.b=function(){} 我应该把a看出对象吧?是不是new Object后a只能是对象,能new a()吗? 如果a是个构造函数就可以new了吧,js中没有真正意义的类,有的是伪类 建议到MDN上去看看有关js的介绍,很值得学习。正在继续学习中……function Employee(){ this.name = ''; this.dept = 'general';}function Manager(){ //this.dept = 'manager'; this.reports = [];}Manager.prototype = new Employee();var = new Manager();alert(.dept);给我的感觉像是“顺藤摸瓜” 对不起,是我说得严重了。这样做也可以,只不过我觉得初始化与否需要通过一个全局变量Person._init来维护有些不安全,而且多余。Person._init随时可能在其他地方被修改到。 恩。你说的很对。因为这个解决方案的有个前提是:约定胜于配置_开头的为私有变量。这个解决方案是Nicholas C.Zakas推荐的方式之一。相对来说也比较完整。如果考虑周全的话实现起来较为复杂。开发效率也相对较低些 JavaScript验证数据 如何固定二级下拉菜单位置 从JAVA文件到JSP页面,如何参数 文件名长度问题 求助,请各位给个办法 怎么打开一个拥有独立的session的IE新窗口 这个问题很难吗?csdn的高手在哪里?? 帮忙看看那里出了错! flashsoft2000(FS2K) 请进。刚才可能出错了。80分恭候光临。 怎么给轮播图片加入标题和内容 用Jquery如何给Image的src属性添加本地路径下的图片? 急問javascript計算問題
function Person(name,age,sex) {
this.name = name;
this.age= age;
this.sex = sex;
}Person.prototype.getName = function() {
return this.name;
};
Person.prototype.setName= function(name) {
this.name = name;
}
...
可以这样做
function Person(name,age,sex) {
this.name = name;
this.age= age;
this.sex = sex;
if(typeof Person._init == "undefined") {
Person.prototype.getName = function() {
return this.name;
};
Person.prototype.setName= function(name) {
this.name = name;
}
...
}
Person._init = true;
}
function Employee(){
this.name = '';
this.dept = 'general';
}
function Manager(){
//this.dept = 'manager';
this.reports = [];
}
Manager.prototype = new Employee();
var = new Manager();
alert(.dept);
给我的感觉像是“顺藤摸瓜”
对不起,是我说得严重了。这样做也可以,只不过我觉得初始化与否需要通过一个全局变量
Person._init来维护有些不安全,而且多余。Person._init随时可能在其他地方被修改到。
_开头的为私有变量。这个解决方案是Nicholas C.Zakas推荐的方式之一。
相对来说也比较完整。
如果考虑周全的话实现起来较为复杂。开发效率也相对较低些