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