定名空间
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))