命名空間
var MYNAMESPACE = MYNAMESPACE || {}; //構(gòu)造函數(shù) MYNAMESPACE.Child = function () {} // 變量 MYNAMESPACE.mystr= "6-ara forerer" MYNAMESPACE.Person = function(name) { this.name = name; }; //原型 MYNAMESPACE.Person.prototype.getName = function() { return this.name; }; // 使用方法 var p = new MYNAMESPACE.Person("Bob"); p.getName(); // bob 。
命名空間函數(shù)實例
//命名空間實現(xiàn)函數(shù)示例 var MYAPP = MYAPP || {} MYAPP.namespace = function (ns_string){ var parts = ns_string.spilt("."), parent = MYAPP, i; //剝離前面的冗余變量 if(parts[0]==="MYAPP"){ parts=parts.slice(1) } for (i=0;i私有屬性和方法 JS中沒有特殊語法來表示私有或公共屬性的語法,但我們可以用閉包來實現(xiàn)此功能
//構(gòu)造函數(shù)獲得私有性 function Gadget() { //私有成員 var name = "Bob" //公有函數(shù) this.getName= function(){ return name } } var toy = new Gadget() console.log(toy.name) //輸出undefined console.log(toy.getName()) //輸出Bob //對象字面量獲得私有性 var myobj = (function () { //私有成員 var name = "Bob" //實現(xiàn)公有部分 return { getName: function () { return name; } } }()) myobj.getName() //輸出Bob 原型私有性 function Gadget() { //私有成員 var name = "Bob" //公有函數(shù) this.getName= function(){ return name } } Gadget.prototype = (function(){ //私有成員 var color= black return { getColor: function (){ return color } } })模塊模式//1、建立一個命名空間 MYAPP.namespace("MYAPP.myarray.userarray") //2、定義該模塊,即時函數(shù)返回具有接口的模塊 MYAPP.myarray.userarray = (function () { return { //do somting } }()) //3、向公共接口提交一些方法 MYAPP.myarray.userarray = (function () { return { getName: function (name){ // } } }()) //揭示模塊模式,只暴露最后設(shè)立的API方法 MYAPP.namespace("MYAPP.myarray.userarray") MYAPP.myarray.userarray = (function () { //私有屬性... var a =1; //私有方法 var getName = function (name){ console.log(name) } return { getName:getName } }())將全局變量導(dǎo)入到模塊中
MYAPP.myarray.userarray = (function (app,glbal) { //引用全局對象 //以及現(xiàn)在被轉(zhuǎn)換為局部變量的命名空間對象 }(MYAPP, this))
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96966.html
摘要:假設(shè)有一個生產(chǎn)交通工具的工廠類,它包含生成多種交通工具實例的方法。在使用這個類生產(chǎn)對象的時候,傳入?yún)?shù),在參數(shù)中的屬性規(guī)定我們需要的類型,構(gòu)造函數(shù)就能夠返回我們需要的對象類型了。 一般來說,創(chuàng)建對象的時候我們都習(xí)慣使用new關(guān)鍵字來調(diào)用constructor構(gòu)造函數(shù),但使用這種方式會有一些缺點,首先構(gòu)造器函數(shù)的創(chuàng)建本身就是為了模仿其他一些面向?qū)ο笳Z言的特性,有些人覺得這是non-sen...
摘要:三種使用構(gòu)造函數(shù)創(chuàng)建對象的方法和的作用都是在某個特殊對象的作用域中調(diào)用函數(shù)。這種方式還支持向構(gòu)造函數(shù)傳遞參數(shù)。叫法上把函數(shù)叫做構(gòu)造函數(shù),其他無區(qū)別適用情境可以在特殊的情況下用來為對象創(chuàng)建構(gòu)造函數(shù)。 一、工廠模式 工廠模式:使用字面量和object構(gòu)造函數(shù)會有很多重復(fù)代碼,在此基礎(chǔ)上改進(jìn)showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:繼承的是超類型中構(gòu)造函數(shù)中的屬性,如上繼承了屬性,但沒有繼承原型中的方法。上述造成的結(jié)果是子類型實例中有兩組超類型的構(gòu)造函數(shù)中定義的屬性,一組在子類型的實例中,一組在子類型實例的原型中。 ECMAScript只支持實現(xiàn)繼承,主要依靠原型鏈來實現(xiàn)。與實現(xiàn)繼承對應(yīng)的是接口繼承,由于script中函數(shù)沒有簽名,所以無法實現(xiàn)接口繼承。 一、原型鏈 基本思想:利用原型讓一個引用類型繼承另一個引用...
摘要:語言精粹讀書筆記第四章函數(shù)函數(shù)字面量函數(shù)字面量包含個部分第一部分,保留字第二部分,函數(shù)名,它可以被忽略。這個超級延遲綁定使得函數(shù)對高度復(fù)用。構(gòu)造器調(diào)用模式一個函數(shù),如果創(chuàng)建的目的就是希望結(jié)合的前綴來調(diào)用,那它就被稱為構(gòu)造器構(gòu)造。 《JavaScript 語言精粹》 讀書筆記 第四章 函數(shù) Functions 函數(shù)字面量 函數(shù)字面量包含4個部分: 第一部分, 保留字 function...
摘要:對象字面量定義一個空對象這里的空指的是其自身屬性為空,對象繼承了的屬性和方法添加屬性方法完全刪除屬性方法自定義構(gòu)造函數(shù)用操作符調(diào)用構(gòu)造函數(shù)時,函數(shù)內(nèi)部會發(fā)發(fā)生以下情況創(chuàng)建一個新對象,并且引用了該對象并繼承了該函數(shù)的原型屬性和方法被加入到的引 對象字面量 //定義一個空對象,這里的空指的是其自身屬性為空,dog對象繼承了Object.prototype的屬性和方法 var dog={} ...
閱讀 2226·2021-11-22 13:54
閱讀 3384·2019-08-29 12:25
閱讀 3448·2019-08-28 18:29
閱讀 3594·2019-08-26 13:40
閱讀 3284·2019-08-26 13:32
閱讀 970·2019-08-26 11:44
閱讀 2238·2019-08-23 17:04
閱讀 2979·2019-08-23 17:02