- 40
- 0
目前封装的表格插件形式如下:
(function ($) {
function Table() {
this.config = {
//默然参数
}
};
Table.prototype = {
//原型中的table方法
rend: function (config) {
return this;
}
};
window.Table = Table;
}(jQuery));
插件调用方式:
var abc = new Table();
abc.rend({
ele:'#table1'
});
问题:有一些属于rend自定义的函数我想写入HyTable.prototype的rend中,但是这样会造成闭包吗?如果定义的函数多了会造成内存泄漏吗?或者有更好的方法吗?
- 共 0 条
- 全部回答
-
玄销骨立 普通会员 1楼
在JavaScript中,原型是一种面向对象编程的关键特性,用于在对象的实例中共享和重用数据和方法。你可以通过添加一个名为
prototype的属性来在原型中添加函数。以下是在JavaScript中添加函数的几种常见方法:- 使用
Object.create()方法:
```javascript function MyObject() { this.exampleMethod = function() { console.log('Example method'); };
Object.defineProperty(this, 'exampleMethod', { enumerable: true, configurable: true, writable: true, value: function() { console.log('Example method'); } });}
var obj = new MyObject(); obj.exampleMethod(); // Output: Example method ```
在这个例子中,我们首先创建了一个名为
MyObject的函数,它有一个名为exampleMethod的私有方法。然后,我们使用Object.defineProperty()方法在MyObject对象的原型上添加了一个名为exampleMethod的属性,该属性具有以下属性:enumerable:表示该属性可以被序列化和反序列化。configurable:表示该属性可以被重写。writable:表示该属性可以被修改。value:指向exampleMethod函数的引用。
在实例化
MyObject对象时,exampleMethod被添加到MyObject对象的原型上,因此它可以在所有实例中被访问和调用。- 使用
Function.prototype.bind()方法:
```javascript function MyObject() { this.exampleMethod = function() { console.log('Example method'); };
Function.prototype.bind = function(target, thisArg) { var args = Array.prototype.slice.call(arguments); return function() { return target.apply(thisArg, args.concat(Array.prototype.slice.call(arguments))); }; }; Object.defineProperty(this, 'exampleMethod', { enumerable: true, configurable: true, writable: true, value: function() { console.log('Example method'); } });}
var obj = new MyObject(); obj.exampleMethod(); // Output: Example method ```
在这个例子中,我们首先定义了一个名为
MyObject的函数,并为其添加了一个名为exampleMethod的私有方法。然后,我们使用Function.prototype.bind()方法在MyObject对象的原型上添加了一个名为exampleMethod的属性,该属性具有以下属性:enumerable:表示该属性可以被序列化和反序列化。configurable:表示该属性可以被重写。writable:表示该属性可以被修改。value:指向exampleMethod函数的引用。
在实例化
MyObject对象时,exampleMethod被添加到MyObject对象的原型上,但被绑定到一个名为MyObject.prototype.bind的函数,该函数在调用exampleMethod时,会接受一个额外的参数target和thisArg,然后在每次调用exampleMethod时,都会将target和thisArg组合成一个数组,然后调用target的方法,最后将数组的元素组合回原来的数组并传递给exampleMethod函数。- 使用
Function.prototype.apply()方法:
```javascript function MyObject() { this.exampleMethod = function() { console.log('Example method'); };
Function.prototype.apply = function(target, thisArg, args) { return function() { return target.apply(thisArg, args.concat(Array.prototype.slice.call(arguments))); }; }; Object.defineProperty(this, 'exampleMethod', { enumerable: true, configurable: true, writable: true, value: function() { console.log('Example method'); } });}
var obj = new MyObject(); obj.exampleMethod(); // Output: Example method ```
在这个例子中,我们首先定义了一个名为
MyObject的函数,并为其添加了一个名为exampleMethod的私有方法。然后,我们使用Function.prototype.apply()方法在MyObject对象的原型上添加了一个名为exampleMethod的属性,该属性具有以下属性:enumerable:表示该属性可以被序列化和反序列化。configurable:表示该属性可以被重写。writable:表示该属性可以被修改。value:指向exampleMethod函数的引用。
在实例化
MyObject对象时,exampleMethod被添加到MyObject对象的原型上,但被绑定到一个名为MyObject.prototype.apply的函数,该函数在调用exampleMethod时,会接受三个参数:target、thisArg和args。然后,这个函数会将target、thisArg和args组合成一个数组,然后调用target的方法,最后将数组的元素组合回原来的数组并传递给exampleMethod函数。这些方法都可以在JavaScript的任何对象上添加函数,无论是在函数定义的内部还是外部。你可以根据需要选择最合适的实现方式。
- 使用
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

