var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Person = Class.create();
Person.prototype = {
initialize: function(name) {
this.name = name;
},
getName: function(prefix) {
return prefix + this.name;
}
};
这段代码真的有点糊涂啊, 照我理解是这个this再去继承自己的this.initialize()方法。为什么自己去继承自己的一个属性呢? 哎~~糊涂,糊涂。帮我解释下吧。高手们
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Person = Class.create();
Person.prototype = {
initialize: function(name) {
this.name = name;
},
getName: function(prefix) {
return prefix + this.name;
}
};
这段代码真的有点糊涂啊, 照我理解是这个this再去继承自己的this.initialize()方法。为什么自己去继承自己的一个属性呢? 哎~~糊涂,糊涂。帮我解释下吧。高手们
<script type="text/javascript">
<!--
// ====>
var Class.create = function(){
return function(){
this.initialize.apply(this, arguments);
}
}
// ====>
var Person = Class.create(); // ====>
var Person = function(){ // Person
this.initialize.apply(this, arguments);
}
var p = new Person('Tom');//实例化Person对象执行 Person的initialize 即prototype绑定的那个方法,并通过apply传递参数
//-->
</script>
给你化简一下
然后把代码封状好,让其"看起来"像面向对象的,也会有很好的结构,有利于代码管理
其次,这样写的好处是不占用全局命名空间,容易复用
initialize 就是他的默认构造函数
其实整个过程我理解了, 是这样子的:var Person = Class.create(); 这个的时候其实已经构造了一个函数
Person=function(argument){initialize: function(argument){};}
接下去就是具体定义initialize方法。 哎~~到这里糊涂了有点,原型的好处是什么呢?
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments); //相当于return 谁调用我我就是谁的属性.initialize(arguments)
}
}
}
var Person = Class.create();//这里得到的是Person的initialize调用, 所以是Person.initialize(arguments) 相当于构造函数persion(name){this.name=name}
Person.prototype = {
initialize: function(name) {
this.name = name;
},
getName: function(prefix) {
return prefix + this.name;
}
};
[code=JScript]
Person.prototype = {
initialize: function(name) {
this.name = name;
},...
[code]
中的 initialize: function(name) {
this.name = name;
},
就是他要做的事情 function initialize(name){this.name=name}
http://www.cnblogs.com/uedt/archive/2010/06/24/1764561.html