[code="java"]Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
} [/code]
这是从prototype里面copy出来.给我个人感觉这两种写法不是一样的吗?
上面书上也做过解释,但没有看明白,总给我感觉这两种写法是一样的. :cry:
请求谁能解释一下,希望越通俗越好.谢谢了.
[b]问题补充:[/b]
看了各位的解释,似乎有些明白.
是否可以这样解释.
[code="java"]Object.extend[/code]
在Object中扩展一个静态全局方法,叫extend.实现了继承的功能.
[code="java"]Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
} [/code]
这句中用apply方法调用了上面的继承方法.起到的只是一种补充的作用.
是一种对prototype的属性进行重写.
就像
[url]http://www.iteye.com/topic/306948[/url]中最后一段所说的.
[b]问题补充:[/b]
从代码的用途上我是理解了,但主要是
[code="java"]Object.extend [/code]
这种用法Object只能是实例后的对象才会这样写.
[code="java"]Object.prototype.extend [/code]
而这种写法是对原构造函数的定义的一种扩展,或是一种改写.
前者是针对实例化对象的,后都是针对原型的.
那前后的Object是一个概念吗?
由于小弟这几天才看的JS.以前一直是写些简单的东西.没有真正的对JS面对对象这方面研究.