您的位置 首页 > 数码极客

如何在app.js中定义一个公共的方法

单例模式

在执行当前 Single 只获得唯一一个对象
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。

var Single = (function(){ var instance; function init() { // 定义私有方法和属性 // 操作逻辑 return { // 定义公共方法和属性 }; } return { // 获取实例 getInstance:function(){ if(!instance){ instance = init(); } return instance; } } })(); var obj1 = Single.getInstance(); var obj2 = Single.getInstance(); con(obj1 === obj2);

工厂模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

function Animal(opts){ var obj = new Object(); obj.color = o; obj.name= o; obj.getInfo = function(){ return '名称:'+ onj.name+', 颜色:'+ obj.color; } return obj; } var cat = Animal({name: '波斯猫', color: '白色'}); cat.getInfo();


构造函数模式

  ECMAScript中的构造函数可用来创建特定类型的对象,像Array和Object这样的原生构造函数,在运行时会自动出现在执行环境中。此外,也可以创建自定义的构造函数,从而定义自定义对象的属性和方法。使用构造函数的方法,既解决了重复实例化的问题,又解决了对象识别的问题。

function Animal(name, color){ = name; = color; = function(){ return ; } } // 实例一个对象 var cat = new Animal('猫', '白色'); con( cat.getName() );

订阅/发布模式(subscribe & publish)


  text属性变化了,set方法触发了,但是文本节点的内容没有变化。 如何才能让同样绑定到text的文本节点也同步变化呢? 这里又有一个知识点: 订阅发布模式。
  订阅发布模式又称为观察者模式,定义了一种一对多的关系,让多个观察者同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有的观察者对象。
发布者发出通知 =>主题对象收到通知并推送给订阅者 => 订阅者执行相应的操作。

// 一个发布者 publisher,功能就是负责发布消息 - publish var pub = { publish: function () { dep.notify(); } } // 多个订阅者 subscribers, 在发布者发布消息之后执行函数 var sub1 = { update: function () { con(1); } } var sub2 = { update: function () { con(2); } } var sub3 = { update: function () { con(3); } } // 一个主题对象 function Dep() { = [sub1, sub2, sub3]; } Dep. = function () { .forEach(function (sub) { (); }); } // 发布者发布消息, 主题对象执行notify方法,进而触发订阅者执行Update方法 var dep = new Dep(); ();


思路: 发布者负责发布消息、 订阅者负责接收接收消息,而最重要的是主题对象,他需要记录所有的订阅这特消息的人,然后负责吧发布的消息通知给哪些订阅了消息的人。

所以,当set方法触发后做的第二件事情就是作为发布者发出通知: “我是属性text,我变了”。 文本节点作为订阅者,在接收到消息之后执行相应的更新动作。


责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何在app.js中定义一个公共的方法”边界阅读