자 바스 크 립 트 의 oo 라 이브 러 리
8767 단어 JavaScriptOO
zero 는 자 바스 크 립 트 자 체 를 사용 하여 자 바스 크 립 트 를 개선 하고 자 하 는 시도 입 니 다. 현재 원본 코드 2000 이 되 지 않 습 니 다.
나 는 가능 한 한 그것 을 가볍게 해서 자바 script 위의 '새로운 언어' 가 되 지 않도록 했다.
프로젝트 원본: https://github.com/zhongxingdou/zero
나의 QQ: 624998961
QQ :250988913
Zero
a JavaScript object oriented framework.
features:
// ,
$run(function(){
eval($global.all); // $global ,
//some code …
$global("obj1", obj1); // $global
})
/*
,run $global ,
$global.run
*/
$global.run(function(obj1, obj2, obj3){
var prop = obj1.prop;
obj2.xx();
//...
})
// ,
function $module(o){
return o;
}
// $module ,
var MAmodule = $module({
onIncluded: function(){
this.prop1 = {}; //this
},
prop: {},
method: function(){}
});
$(obj).include(MAmodule);
// z.Base
var Class = function(){
this.callBase(); // constructor
this.property("prop"); // prop
this.property({
"prop1": {},
"prop2": {
get: function(){},
set: function(){}
}
});
this.include(module); //
}
Class.prototye = {
sayHello: function(){
this.callBase(); // sayHello
}
}
/*
z.Base,
z.Base Zero ,
$class(Class) Class extend,implement,include ,
Class
*/
$class(Class).extend(z.Base).implement(AInterface);
var StringWrapper = $module({
capitalize: function(){
var o = this.target;
return o.charAt(0).toUpperCase() + o.slice(1);
}
});
var NumberWrapper = $module({
next: function(){ return this.target.valueOf() + 1; }
});
$.regist(StringWrapper, String, "stringWrapper");
$.regist(NumberWrapper, Number, "numberWrapper");
$.setDefault(String, "stringWrapper");
$("string").capitalize();
$(8).wrap("numberWrapper").next();
var str = $$("string");
str.capitalize();
// typeof
$is('string', 'abc');
//
$is(Function, function() {});
//
$is(null, obj);
$is(undefined, obj);
var spec = $spec({
"instanceOf": B,
"prototypeOf": Object.prototype,
"typeof": "type"
});
$is(spec, obj); //
var IBase = $interface({
member: {
prop: String, //
method: "function(p1, p2)", // function,
prop3: {
type: { //
instanceOf: "prop3",
prototypeOf: [Object]
},
value: {}, //
check: function(v){}, //
required: true, //
ownProperty: true //
},
prop4: {type: [String, Number]}
},
type: Object, //
freeze: true, // , member
base: IObject //
})
// member type,
var IBase = $interface({
prop: String,
method: "function(p1,p2)"
}, Object)
$support(Interface, aObj); //
fn = function(p1, p2) {
var option = $option(); // key/value ,
$support(fn.option, option); //
//option.key1
//option.key2
//option.key3
//...
}
fn.option = { key1: {value: {}}, key2: {value: {}}, key3: {}}
// option
var fn = $fn(function(){//...}, {key1: {}, key2: {}});
fn("p1", "p2");
fn({
key3: {},
key2: {}
});
를 설정 하 는 것 을 권장 합 니 다. var fnWithStringAndNumber = function(){}
fnWithStringAndNumber.option = {
name: 'string',
age: 'number'
}
function fnWithTwoString(){
//do something...
}
fnWithTwoString.option = {
name: 'string',
interest: 'string'
}
var fn = $overwrite(fnWithStringAndNumber, fnWithTwoString);
fn("jim", 8); //call fnWithStringAndNumber
// $dispatch
var fn2 = function(){
var args = ["jim", 8];
var fn = $dispatch([fnWithStringAndNumber, fnWithTwoString], args);
fn.apply(this, args);
}
Object.prototype.m = {};
var obj = {p: {}, __p: {}, fn: function(){}, __fn: function(){}};
var o = $inspect(obj);
o.methods();
//--> ["fn", "__fn"]
o.publicMethods();
//--> ["fn"]
o.privateMethods();
//--> ["__fn"]
o.fields();
//--> ["p", "__p", "m"]
o.publicFields();
//--> ["p", "m"]
o.privateFields();
//--> ["__p"]
o.keys();
//--> ["p", "__p", "fn", "__fn"]
o.allKeys();
//--> ["p", "__p", "fn", "__fn", "m"]
o.proto();
//--> Object {}
o.protoLink();
//--> [Object {}]
o.creator();
//--> Object()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.