《JavaScript形式》读书笔记(五)对象创制形式

定名空间

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<parts.length;i+=1) {
    //假如它不存在,就竖立一个属性
        if(typeof parent[parts[i]]==="undefined"){
            parent[[parts[i]]={}; 
        }
        parent= parent[parts[i]]
    }
    return parent
}
//运用
//将返回值赋给局部变量
var mymodule = MYAPP.namespace('MYAPP.module.mymodule');
mymodule === MYAPP.module.mymodule //true
//疏忽空间MYAPP
MYAPP.namespace('module.youmodule')

私有属性和要领

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))
    原文作者:ZONE_98F
    原文地址: https://segmentfault.com/a/1190000016125643
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞