V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lizhenda  ›  全部回复第 25 页 / 共 42 页
回复总数  838
1 ... 21  22  23  24  25  26  27  28  29  30 ... 42  
2017-09-12 18:30:22 +08:00
回复了 xiaomeimei 创建的主题 JavaScript js 怎么来写一个基类
/**
* JavaScript Inheritance Class
*
* 实现了继承和定义对象,初始化自动调用 ctor() 构造函数,自带一个简单的 clone() 拷贝函数
* 每个 Class 都带有一个唯一 ID : _pid,每个 new 出来的对象也带一个唯一 ID : _uid (可以用于相同 Class 的不同对象)
*
* @author : zhenda.li
*/

/**
* @name ClassManager
*/
var ClassManager = {
pid: (0 | (Math.random() * 998)), // 每个 Class 的唯一 ID
uid: (0 | (Math.random() * 998)), // 每个 New 出来的对象唯一 ID

getPID: function () {
return this.pid++;
},

getUID: function () {
return this.uid++;
}
};

(function () {
var fnTest = /\b_super\b/;

this.Class = function () {
};

/**
* Create a new Class that inherits from this Class
* @static
* @param {object} prop
* @return {function}
*/
Class.extend = function (prop) {
var _super = this.prototype;
var prototype = Object.create(_super);
var desc = {writable: true, enumerable: false, configurable: true};

function Class() {
this._uid = ClassManager.getUID();
if (this.ctor) {
this.ctor.apply(this, arguments);
}
}

desc.value = ClassManager.getPID();
Object.defineProperty(prototype, '_pid', desc);

for (var name in prop) {
var isFunc = isFunction(prop[name]);
var override = isFunction(_super[name]);
var hasSuperCall = fnTest.test(prop[name]);

if (isFunc && override && hasSuperCall) {
desc.value = (function (name, fn) {
return function () {
var tmp = this._super;
this._super = _super[name];
var ret = fn.apply(this, arguments);
this._super = tmp;
return ret;
};
})(name, prop[name]);
Object.defineProperty(prototype, name, desc);
} else {
prototype[name] = prop[name];
}
}

Class.prototype = prototype;

desc.value = Class;
Object.defineProperty(Class.prototype, 'constructor', desc);

/**
* 快捷设置属性方法
* e.g : obj.attr({ x : 1, y : 2 });
*/
Class.prototype.attr = function (attrs) {
for (var key in attrs) {
if (!isUndefined(this[key]))
this[key] = attrs[key];
}
};

/**
* 每个对象自带拷贝方法
* @return Class
*/
Class.prototype.clone = function () {
var newObj = (this.constructor) ? new this.constructor : {};
for (var name in this) {
var copy = this[name];
if ((typeof copy) === "Class") {
newObj[name] = copy.clone();
} else {
newObj[name] = copy;
}
}
return newObj;
};

Class.extend = arguments.callee;

return Class;
};
})();
2017-09-12 18:29:10 +08:00
回复了 xiaomeimei 创建的主题 JavaScript js 怎么来写一个基类
```javascript
// 刚好我之前项目想用写了个,供参考
```
2017-09-01 10:09:42 +08:00
回复了 eyp82 创建的主题 Go 编程语言 大家有没有用 Go 开发自用小工具的, 感觉适不适合?
合适,我花时间把之前用 py 和 其它脚本写的工具,都用 go 重新实现一遍,可以说很好用,特别是需要 开多线程或多进程的处理任务时,go 的优势更大,几行代码就搞定了
2017-08-25 13:42:02 +08:00
回复了 ninebeta 创建的主题 程序员 软件下载站是依靠什么赚钱的, APP 市场怎么赢利?
图片很多挂了
2017-08-05 19:46:54 +08:00
回复了 chrislon 创建的主题 Go 编程语言 安利一下我的 golang 游戏服务器框架, 高效, 轻量, 简单
和自己裸写的有啥商业化区别呢,主要觉得自己从 0 写好像也不那么难,go 已经都这么屌了
2017-04-19 16:46:14 +08:00
回复了 chousb 创建的主题 推广 我不卖 T 恤,我只送!
中奖是干嘛的
2017-02-23 23:02:31 +08:00
回复了 Quaintjade 创建的主题 信息安全 SHA-1 的第一个成功碰撞
要出名了呀
2017-02-22 09:30:05 +08:00
回复了 zhangchioulin 创建的主题 程序员 辞职了,有点累,想休息下。
支持,祝好
2017-02-09 20:44:59 +08:00
回复了 KiseXu 创建的主题 Android 请大家帮忙分析 Android 手机木马
可以去看雪啊
2017-02-09 13:46:15 +08:00
回复了 tts 创建的主题 macOS Mac 下能够快速打开以及响应大 TXT 的软件?
vscode
2017-01-22 19:03:44 +08:00
回复了 wangxkww 创建的主题 程序员 写了个用 Lua 生成 BMP 二维码的小东西
不应该是 lua 调用 c++ 来做吗····· 用 lua 来搞何苦呢
2017-01-19 09:57:34 +08:00
回复了 lzjamao 创建的主题 游戏开发 问一个破解游戏问题。如何关闭游戏物理引擎碰撞。
你关了,车不就掉到无尽虚空了么
2017-01-18 10:44:48 +08:00
回复了 fsgmhoward 创建的主题 推广 [KVM] NyaVM 香港 促销+福利升级
xftp 下载文件到深圳本地光纤电信( 100m ),稳定 250KB/s
2017-01-17 10:45:36 +08:00
回复了 fsgmhoward 创建的主题 推广 [KVM] NyaVM 香港 促销+福利升级
为啥测速 只有 40Mbit 的速度····
2017-01-17 10:38:30 +08:00
回复了 fsgmhoward 创建的主题 推广 [KVM] NyaVM 香港 促销+福利升级
为啥只能支付宝付款啊,多扣了我钱啊···· 坑
1 ... 21  22  23  24  25  26  27  28  29  30 ... 42  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3090 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 59ms · UTC 11:57 · PVG 19:57 · LAX 04:57 · JFK 07:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.