最近项目中使用到Requirejs、Backbone、Handlebars,对Backbone的Model可以绑定change、destory比较奇怪,
查看其源码,大概明白了什么意思,在此记录下自己的简单实现,以此作为笔记备忘。
(function(w){
var Model = function(){};
Model.prototype.data = [];
Model.prototype._callback = [];
Model.prototype._callbackOp = [];
Model.prototype.add = function(key,value){
this.data[key] = value;
var callback = this._callback['change'];
if( callback&&typeof callback==='function' ){
callback.apply(this,this._callbackOp['change']);
}
};
Model.prototype.get = function(key){
return this.data[key];
}
Model.prototype.bind = function(on,func,op){
this._callback[on] = func;
this._callbackOp[on] = op;
}
w.Model = Model;
})(window);
function callback(paramA,paramB){
alert('model对象改变了:key='+paramA+',value='+paramB);
};
var person = new Model();
person.bind('change',callback,['参数1','参数2']);
person.add('name','gavin');
alert('get方法取值:'+person.get('name'));
另外顺便记录下javascript中call、apply的使用,每次都需要查询,老记不住,⊙﹏⊙b汗!
写道
JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象
区分apply,call就一句话,
写道
foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments)==this.foo(arg1, arg2, arg3)
例子:
function A(mA,mB){
alert('A,mA='+mA+';mB='+mB);
};
function B(){
alert('B');
A.apply(this,['参数A','B中apply调用']);
A.call(this,'参数A','B中call调用');
};
B();
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的。所以每个Function对象也就是每个方法都有call, apply属性。注意对象实例没有prototype方法,即使用了new后的对象。
分享到:
相关推荐
将JavaScript事件绑定到ASP.NET对象
本文实例讲述了JavaScript Dom 绑定事件操作JavaScript Dom 绑定事件操作。分享给大家供大家参考,具体如下: JavaScript Dom 绑定事件 // 先获取Dom对象,然后进行绑定 document.getElementById('xx').onclick ...
该文档来自2013年(秋季)...JavaScript早已经跳出了WEB/DOM的世界,从一种DOM操作的脚本语言发展成了通用性脚本语言,而不仅仅局限于Web领域,例如大名鼎鼎的Node.JS项目,Cocos2d-x也提供了JavaScript的脚本绑定。
基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构
主要介绍了javascript事件绑定学习要点,主要包含下面四个方面1.传统事件绑定的问题,2.W3C事件处理函数,3.IE事件处理函数,4.事件对象的其他补充,有需要的小伙伴可以参考下
一个 jquery 插件,便于将 javascript 对象绑定到表单字段。 该插件将根据绑定对象的属性设置表单字段元素的值,并在对表单进行更改时更新绑定对象。 用法 Binddata 期望表单字段元素的名称与模型中的属性相匹配。 ...
JavaScript对象与DOM对象进行绑定会遇到一个问题:如果被绑定的对象的方法中包含this关键字,当事件被触发时this指向的却是DOM对象,而不是之前的JS对象。
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]这个例子循环为一组对象绑定事件处理函数。 但是,如果我们在这个基础上增加一些需求。比如在点击某一条记录的时候弹出这是第几条记录? 肯能你会理所当然的这么写:...
JavaScript的事件基础知识,包含: 事件绑定 事件类型 事件对象
特征线程安全彻底仔细的测试布尔值,数字,字符串,对象,数组,正则表达式,函数编译并运行JavaScript 保存并加载预编译的脚本数据使用全局对象模板创建JavaScript上下文在Go中操作JavaScript对象属性和数组元素...
对象绑定事件 4 插件数目 4 取变量类型 4 下拉框 4 查找对象 4 定时 4 UNCODE编码 4 父对象 4 交换表的行 5 简单邮件 5 禁止选取 6 //过滤数字 8 //特殊用途 9 //不缓存 9 //正则匹配 9 //消除图像工具栏 10 //无...
Javascript小技巧,觉得用来查询JS的事件挺方便,主要是事件源对象event.srcElement.tagName ,event.srcElement... 绑定事件 document.captureEvents(Event.KEYDOWN); 访问窗体元素 document.all("txt").focus();
冒泡型事件的基本思想是,事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。 示例(1):点击我触发冒泡型事件流 示例(1)的XHTML代码结构:”cnt0″> 点击我触发冒泡型事件流</a></...
下面是页面的dom结构 代码如下: ”test”> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ul> 下面是javascript代码 代码如下: //根据ID获取对象 function id(v) { return document.getElementById(v);...
实现一个简单的on和off方法 介绍: Event对象: funcList: {}, //保存delegate所绑定的... Event.delegateHandle: 当发生事件之后,随着事件的冒泡上升,判断存在事件委托的元素,并执行对应的回调函数 addEvent / off
使用此库,Knockout 将查找data-class属性(默认情况下)并使用其值键入包含每个绑定定义的 JavaScript 对象。 这使您可以将绑定规范从标记中移到 JavaScript 代码层中。 该库使用了 Knockout 2.0+ 中的...
TagWire是一个JavaScript库,可轻松在HTML标签中反映数据。 通过以以下格式将其添加到HTML标签的class属性中来工作。 class = "_{variable name}-{tail function}" 每个部分的目的如下。 _ :这是区分通用类和...
JavaScript 是网景(Netscape)公司开发的一种基于客户端浏览器、面向(基于)对象、事件驱动式的网页脚本语言。JavaScript语言的前身叫作Livescript。 JavaScript的特点: 简单、易学、易用; 跨平台;IE、...
本文实例讲述了ES6中javascript实现函数绑定及类的事件绑定功能的方法。分享给大家供大家参考,具体如下: 函数绑定 箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法(call、apply、bind)。但是,箭头...
插件,提供 DOM 元素和 Javascript 对象之间的 Javascript 数据绑定。 它受到提供的绑定 API 的启发,但将自身限制为数据绑定,因此更轻量级(约 7k)。例子我们打个招呼吧。 首先,我们将包含 zepto.js 和 binder....