V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  lizhenda  ›  全部回复第 41 页 / 共 58 页
回复总数  1160
1 ... 37  38  39  40  41  42  43  44  45  46 ... 58  
2017 年 9 月 12 日
回复了 xiaomeimei 创建的主题 JavaScript js 怎么来写一个基类
当然,最好的办法是用 es6,直接上 class
2017 年 9 月 12 日
回复了 xiaomeimei 创建的主题 JavaScript js 怎么来写一个基类
评论不能写 MD 么,至于用法,

var Test = Class.extend({

/**
* 构造函数, 初始化
*/
ctor: function () {
this.func();
},

func: function () {

}
});
2017 年 9 月 12 日
回复了 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 年 9 月 12 日
回复了 xiaomeimei 创建的主题 JavaScript js 怎么来写一个基类
```javascript
// 刚好我之前项目想用写了个,供参考
```
2017 年 9 月 1 日
回复了 eyp82 创建的主题 Go 编程语言 大家有没有用 Go 开发自用小工具的, 感觉适不适合?
合适,我花时间把之前用 py 和 其它脚本写的工具,都用 go 重新实现一遍,可以说很好用,特别是需要 开多线程或多进程的处理任务时,go 的优势更大,几行代码就搞定了
2017 年 8 月 25 日
回复了 ninebeta 创建的主题 程序员 软件下载站是依靠什么赚钱的, APP 市场怎么赢利?
图片很多挂了
和自己裸写的有啥商业化区别呢,主要觉得自己从 0 写好像也不那么难,go 已经都这么屌了
2017 年 4 月 19 日
回复了 chousb 创建的主题 推广 我不卖 T 恤,我只送!
中奖是干嘛的
2017 年 3 月 9 日
回复了 a1310747 创建的主题 情感问题 想问下你们是如何跟女朋友相处的?
住一起咯,终结解决办法
2017 年 2 月 23 日
回复了 Quaintjade 创建的主题 信息安全 SHA-1 的第一个成功碰撞
要出名了呀
2017 年 2 月 22 日
回复了 zhangchioulin 创建的主题 程序员 辞职了,有点累,想休息下。
支持,祝好
2017 年 2 月 9 日
回复了 KiseXu 创建的主题 Android 请大家帮忙分析 Android 手机木马
可以去看雪啊
2017 年 2 月 9 日
回复了 tts 创建的主题 macOS Mac 下能够快速打开以及响应大 TXT 的软件?
vscode
2017 年 1 月 22 日
回复了 LaoK666 创建的主题 程序员 写了个用 Lua 生成 BMP 二维码的小东西
不应该是 lua 调用 c++ 来做吗····· 用 lua 来搞何苦呢
2017 年 1 月 19 日
回复了 lzjamao 创建的主题 游戏开发 问一个破解游戏问题。如何关闭游戏物理引擎碰撞。
你关了,车不就掉到无尽虚空了么
2017 年 1 月 18 日
回复了 fsgmhoward 创建的主题 推广 [KVM] NyaVM 香港 促销+福利升级
xftp 下载文件到深圳本地光纤电信( 100m ),稳定 250KB/s
1 ... 37  38  39  40  41  42  43  44  45  46 ... 58  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2722 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 80ms · UTC 03:01 · PVG 11:01 · LAX 20:01 · JFK 23:01
♥ Do have faith in what you're doing.