前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript模式 读书笔记四

JavaScript模式 读书笔记四

作者头像
lilugirl
发布2019-05-28 11:02:20
2610
发布2019-05-28 11:02:20
举报
文章被收录于专栏:前端导学

第五章 对象创建模式

命名空间模式

通用命名空间函数

代码语言:javascript
复制
var MYAPP=MYAPP || {}

MYAPP.namespace=function(ns_string){
  var parts=ns_string.split("."),
  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 module2=MYAPP.namespace('MYAPP.modules.module2');
module2===MYAPP.modules.module2 //true;

//忽略最前面的MYAPP
MYAPP.namespace("modules.module51");

//长命名空间
MYAPP.namespace("once.upon.a.time.there.was.this.long.nested.property");

声明依赖关系

这是一个及其简单的模式,但同时又很多优点,速度更快

代码语言:javascript
复制
var myFunction=function(){
  //依赖
  var event=YAHOO.util.Event,
      dom=YAHOO.util.Dom;

      //使用事件和DOM变量
代码语言:javascript
复制
var MYAPP=MYAPP || {}

MYAPP.namespace=function(ns_string){
  var parts=ns_string.split("."),
  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 modules=MYAPP.namespace("MYAPP.modules");
modules.m1=function(){
  alert('m1');
}
modules.m2=function(){
  alert("m2");
}
function test(){
  var modules=MYAPP.modules;
  modules.m1();
  modules.m2();

}

私有属性和方法

JavaScript中所有对象的成员都是公共的

代码语言:javascript
复制
var myobj={
  myprop:1,
  getProp:function(){
    return this.myprop;
  }
}

console.log(myobj.myprop); //myprop是公有可访问的
console.log(myobj.getProp());  //getProp也是公有可访问的
代码语言:javascript
复制
function Gadget(){
  this.name="iPod";
  this.stretch=function(){
    return 'iPod';
  };
}
var toy=new Gadget();
console.log(toy.name); //name 是公有的
console.log(toy.stretch()); //stretch()是公有的

私有成员

可以使用闭包实现私有成员

代码语言:javascript
复制
function Gadget(){
  //私有成员
  var name="iPod";

  //公有函数
  this.getName=function(){
    return name;
  };
}
var toy=new Gadget();
console.log(toy.name); //name 是undefined的 ,它是私有的
console.log(toy.getName()); //getName()是公有的 输出iPod

特权方法

Privileged Method ,在上面的例子中,getName()就是一个特权方法,因为它具有访问私有属性的特殊权限。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第五章 对象创建模式
    • 命名空间模式
      • 通用命名空间函数
        • 声明依赖关系
          • 私有属性和方法
            • 私有成员
            • 特权方法
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档