资讯专栏INFORMATION COLUMN

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

Yujiaao / 3328人阅读

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96966.html

相关文章

  • JavaScript 设计模式读书笔记()——工厂模式

    摘要:假设有一个生产交通工具的工厂类,它包含生成多种交通工具实例的方法。在使用这个类生产对象的时候,传入参数,在参数中的属性规定我们需要的类型,构造函数就能够返回我们需要的对象类型了。 一般来说,创建对象的时候我们都习惯使用new关键字来调用constructor构造函数,但使用这种方式会有一些缺点,首先构造器函数的创建本身就是为了模仿其他一些面向对象语言的特性,有些人觉得这是non-sen...

    Eirunye 评论0 收藏0
  • javascript高级程序设计》第六章 读书笔记javascript对象的几种创建方式

    摘要:三种使用构造函数创建对象的方法和的作用都是在某个特殊对象的作用域中调用函数。这种方式还支持向构造函数传递参数。叫法上把函数叫做构造函数,其他无区别适用情境可以在特殊的情况下用来为对象创建构造函数。 一、工厂模式 工厂模式:使用字面量和object构造函数会有很多重复代码,在此基础上改进showImg(https://segmentfault.com/img/bVbmKxb?w=456&...

    xiaotianyi 评论0 收藏0
  • javascript高级程序设计》第六章 读书笔记javascript继承的6种方法

    摘要:继承的是超类型中构造函数中的属性,如上继承了属性,但没有继承原型中的方法。上述造成的结果是子类型实例中有两组超类型的构造函数中定义的属性,一组在子类型的实例中,一组在子类型实例的原型中。 ECMAScript只支持实现继承,主要依靠原型链来实现。与实现继承对应的是接口继承,由于script中函数没有签名,所以无法实现接口继承。 一、原型链 基本思想:利用原型让一个引用类型继承另一个引用...

    孙吉亮 评论0 收藏0
  • JavaScript 语言精粹》读书笔记 - 函数

    摘要:语言精粹读书笔记第四章函数函数字面量函数字面量包含个部分第一部分,保留字第二部分,函数名,它可以被忽略。这个超级延迟绑定使得函数对高度复用。构造器调用模式一个函数,如果创建的目的就是希望结合的前缀来调用,那它就被称为构造器构造。 《JavaScript 语言精粹》 读书笔记 第四章 函数 Functions 函数字面量 函数字面量包含4个部分: 第一部分, 保留字 function...

    wdzgege 评论0 收藏0
  • JavaScript模式读书笔记(二)字面量和构造函数

    摘要:对象字面量定义一个空对象这里的空指的是其自身属性为空,对象继承了的属性和方法添加属性方法完全删除属性方法自定义构造函数用操作符调用构造函数时,函数内部会发发生以下情况创建一个新对象,并且引用了该对象并继承了该函数的原型属性和方法被加入到的引 对象字面量 //定义一个空对象,这里的空指的是其自身属性为空,dog对象继承了Object.prototype的属性和方法 var dog={} ...

    _Zhao 评论0 收藏0

发表评论

0条评论

Yujiaao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<