轉(zhuǎn)載請(qǐng)注明出處
成都創(chuàng)新互聯(lián)專(zhuān)注于平遠(yuǎn)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供平遠(yuǎn)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),平遠(yuǎn)網(wǎng)站制作、平遠(yuǎn)網(wǎng)頁(yè)設(shè)計(jì)、平遠(yuǎn)網(wǎng)站官網(wǎng)定制、成都小程序開(kāi)發(fā)服務(wù),打造平遠(yuǎn)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供平遠(yuǎn)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。原文連接 http://blog.huanghanlian.com/article/5b698f22b8ea642ea9213f51
我們?cè)趺慈ツM重載,在javasceipr中我們可以通過(guò)參數(shù)的類(lèi)型區(qū)別或者數(shù)量的區(qū)別,來(lái)去讓同樣一個(gè)函數(shù)名字,可以根據(jù)不同的參數(shù)列表的情況來(lái)去調(diào)用相應(yīng)的函數(shù)。
javascript中函數(shù)類(lèi)型是不確定的,并且參數(shù)的個(gè)數(shù)也是可以任意的,那么我們可以通過(guò)判斷實(shí)際傳入的參數(shù)的個(gè)數(shù),來(lái)去做一個(gè)模擬的重載,
模擬重載
function person() {
var args = arguments;
if (typeof args[0] === 'object' && args[0]) {
if (args[0].name) {
this.name = args[0].name;
}
if (args[0].age) {
this.age = args[0].age;
}
} else {
if (args[0]) {
this.name = args[0];
}
if (args[1]) {
this.age = args[1];
}
}
};
person.prototype.toString = function() {
return "姓名:" + this.name + "年齡:" + this.age
}
var peng = new person({
name: "繼小鵬",
age: 23
});
console.log(peng.toString()); //姓名:繼小鵬年齡:23
var peng1 = new person("是你", 23);
console.log(peng1.toString()); //姓名:是你年齡:23
調(diào)用子類(lèi)方法
例子1
if (!Object.create) {
Object.create = function(proto) {
function F() {};
F.prototype = proto;
return new F();
};
}
function person(name) {//基類(lèi)
this.name=name;
}
person.prototype.init=function(){
console.log("你好"+this.name)
}
function student(name,classname){ //學(xué)生類(lèi)
this.classname=classname;
person.call(this,name);
}
student.prototype = Object.create(person.prototype);
student.prototype.constructor = student;
student.prototype.init=function(){
console.log("你好s"+this.name)
}
var peng=new student("繼小鵬","class2");
console.log(peng);
peng.init();
例子2子類(lèi)調(diào)用基類(lèi)方法
function person(name) {//基類(lèi)
this.name=name;
}
function student(name,classname){ //學(xué)生類(lèi)
this.classname=classname;
person.call(this,name);
}
person.prototype.init=function(){
console.log(this.name)
}
student.prototype.init=function(){
person.prototype.init.apply(this,arguments);
}
var peng=new student("繼小鵬","class2");
console.log(peng);
peng.init();
鏈?zhǔn)秸{(diào)用
function classman() {}
classman.prototype.addClass = function(str) {
console.log('calss' + str + 'added');
return this;
}
var mang = new classman();
mang.addClass('classA').addClass('classB').addClass('classC')
// calssclassAadded
// calssclassBadded
// calssclassCadded
使用jq的時(shí)候$("#id").addClass('df')
選擇器做些操作后在繼續(xù)addClass('df')還可以再做動(dòng)作一層層鏈?zhǔn)饺フ{(diào)用。
例子解釋
function classman() {} //現(xiàn)定義一個(gè)構(gòu)造器classman
classman.prototype.addClass = function(str) { //給classman構(gòu)造器prototype添加addClass屬性方法
console.log('calss' + str + 'added'); //輸出表示添加一個(gè)class
return this; //return this表示返回classman的實(shí)例因?yàn)榉祷亓藢?shí)例那么緊接著后面不需要加mang.addClass('classA')直接后面加.addClass('classB').addClass('classB')就可以,每次執(zhí)行完都會(huì)返回實(shí)例
}
var mang = new classman();
mang.addClass('classA').addClass('classB').addClass('classC')
// calssclassAadded
// calssclassBadded
// calssclassCadded
抽象類(lèi)
function Detectorlse() {
throw new Error("Abstract class can not be invoked directly!");
}
Detectorlse.detect = function() {
console.log('Detcetion starting...');
}
Detectorlse.stop = function() {
console.log('Detector stopped');
}
Detectorlse.init = function() {
throw new Error("Error");
}
function linkDetector() {};
linkDetector.prototype = Object.create(Detectorlse.prototype)
linkDetector.prototype.constructor = linkDetector;
//...add methods to LinkDetector...
defineProperty(ES5)
function Person(name) {
Object.defineProperty(this, 'name', {
value: name,
enumerable: true
});
};
Object.defineProperty(Person, 'arms_num', {
value: 2,
enumerable: true
});
Object.seal(Person.prototype);
Object.seal(Person);
function student(name, classname) {
this.classname = classname;
Person.call(this, name);
};
student.prototype = Object.create(Person.prototype);
student.prototype.constructor = student;
var peng = new Person('繼小鵬');
console.log(peng);
var han = new student("汗", "class2");
console.log(han);
模塊化
定義簡(jiǎn)單模塊化
var moduleA;
moduleA=function(){
var prop=1;
function func(){};
return {
func:func,
prop:prop
}
}();
定義簡(jiǎn)單模塊化2
var moduleA;
moduleA = new function() {
var prop = 1;
function func() {};
this.func = func;
this.prop = prop;
}();
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。