问题一:像 @
Arrowing 所说的, Js 自带的方法要考虑上下文, document.getElementsByTagName 必须绑在全局上。
另外扩展 Js 本身的一些方法一般是重新定义一下:比如像一些 ie 兼容的扩展方法等
var gTag = function (tagName ){
return document.getElementsByTagName (tagName );
};
gTag ('p');
问题二:两个关注点:
1.prototype 和 call\apply
function Old (){}
Old.prototype = {
name: "old name",
run: function (){
console.log ("Name is: " +
this.name );
}
}
var o = new Old;
var New = {
name: "new name"
};
o.run (New ); // Name is (old old old )/3 遍 name
//
o.run 并没有接受参数的地方,你应该要写成 o.run.call (New );吧?
//1.
o.run (New ); 打印 old name 的原因是
o.run o 从类 Old 定义而来,而 Old 的
prototype.name = “ old name ”;
//2. 若你本意是 o.run.call (New ) 则打印 Name is new name 此处指针会指向 New 对象。