在创建大量DOM元素时,document.createElement和朋友可以添加大量的字节和丑陋.我知道我可以创建自己的子程序,或使用innerHTML或其他什么,但为什么我不能这样做:
var $c = document.createElement;
var newP = $c('p');
Run Code Online (Sandbox Code Playgroud)
Firebug抱怨这条消息:
"Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)"
Run Code Online (Sandbox Code Playgroud)
显然,我做了一些不允许的事情.为什么不呢?它允许其他东西,例如Array.splice或Math.min.
调用它的方式会导致方法this内的值createElement引用全局对象.
我建议你简单地使用一个函数:
var $c = function (tagName) { return document.createElement(tagName); };
var newP = $c('p');
Run Code Online (Sandbox Code Playgroud)
我说的行为可以用一个例子来描述:
var foo = 'global foo';
var obj = {
foo: "I'm obj.foo",
method: function () {
return this.foo;
}
};
var fn = obj.method;
obj.method(); // "I'm obj.foo"
fn(); // "global foo"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |