您的位置:首页 > Web前端 > JavaScript

js如何实现模拟监听事件

2012-12-27 11:26 447 查看
function Animal(name) {

  this.name = name;

  this.getName = function() {

    return
this.name;

  }

  this.setName = function(name) {

    this.name =
name;

   
this._valueChangeHandler('name');

  }

 }

 Animal.prototype = {

   onChange: function(valueName,
fun) {

    
this["_" + valueName + "ChangeHandlers"] = this["_" + valueName +
"ChangeHandlers"] || [];

    
this["_" + valueName + "ChangeHandlers"].push(fun);

   },

   _valueChangeHandler:
function(valueName) {

    
var o = this["_" + valueName + "ChangeHandlers"];

    
if (o) {

      
for (var i = 0, n = o.length; i < n; i++) {

        
var methodName = "get" + valueName.charAt(0).toUpperCase() +
valueName.slice(1);

        
o[i](this[methodName]());

      
}

    
}

   
 

   }

 }

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

  console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

  console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");

function Animal(name) {

this.name = name;

this.getName = function() {

return this.name;

}

this.setName = function(name) {

this.name = name;

this._valueChangeHandler('name');

}

}

Animal.prototype = {

onChange: function(valueName, fun) {

this["_" + valueName + "ChangeHandlers"] = this["_" + valueName + "ChangeHandlers"] || [];

this["_" + valueName + "ChangeHandlers"].push(fun);

},

_valueChangeHandler: function(valueName) {

var o = this["_" + valueName + "ChangeHandlers"];

if (o) {

for (var i = 0, n = o.length; i < n; i++) {

var methodName = "get" + valueName.charAt(0).toUpperCase() + valueName.slice(1);

o[i](this[methodName]());

}

}

}

}

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");function Animal(name) {

this.name = name;

this.getName = function() {

return this.name;

}

this.setName = function(name) {

this.name = name;

this._valueChangeHandler('name');

}

}

Animal.prototype = {

onChange: function(valueName, fun) {

this["_" + valueName + "ChangeHandlers"] = this["_" + valueName + "ChangeHandlers"] || [];

this["_" + valueName + "ChangeHandlers"].push(fun);

},

_valueChangeHandler: function(valueName) {

var o = this["_" + valueName + "ChangeHandlers"];

if (o) {

for (var i = 0, n = o.length; i < n; i++) {

var methodName = "get" + valueName.charAt(0).toUpperCase() + valueName.slice(1);

o[i](this[methodName]());

}

}

}

}

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");function Animal(name) {

this.name = name;

this.getName = function() {

return this.name;

}

this.setName = function(name) {

this.name = name;

this._valueChangeHandler('name');

}

}

Animal.prototype = {

onChange: function(valueName, fun) {

this["_" + valueName + "ChangeHandlers"] = this["_" + valueName + "ChangeHandlers"] || [];

this["_" + valueName + "ChangeHandlers"].push(fun);

},

_valueChangeHandler: function(valueName) {

var o = this["_" + valueName + "ChangeHandlers"];

if (o) {

for (var i = 0, n = o.length; i < n; i++) {

var methodName = "get" + valueName.charAt(0).toUpperCase() + valueName.slice(1);

o[i](this[methodName]());

}

}

}

}

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");

function Animal(name) {

this.name = name;

this.getName = function() {

return this.name;

}

this.setName = function(name) {

this.name = name;

this._valueChangeHandler('name');

}

}

Animal.prototype = {

onChange: function(valueName, fun) {

this["_" + valueName + "ChangeHandlers"] = this["_" + valueName + "ChangeHandlers"] || [];

this["_" + valueName + "ChangeHandlers"].push(fun);

},

_valueChangeHandler: function(valueName) {

var o = this["_" + valueName + "ChangeHandlers"];

if (o) {

for (var i = 0, n = o.length; i < n; i++) {

var methodName = "get" + valueName.charAt(0).toUpperCase() + valueName.slice(1);

o[i](this[methodName]());

}

}

}

}

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");function Animal(name) {

this.name = name;

this.getName = function() {

return this.name;

}

this.setName = function(name) {

this.name = name;

this._valueChangeHandler('name');

}

}

Animal.prototype = {

onChange: function(valueName, fun) {

this["_" + valueName + "ChangeHandlers"] = this["_" + valueName + "ChangeHandlers"] || [];

this["_" + valueName + "ChangeHandlers"].push(fun);

},

_valueChangeHandler: function(valueName) {

var o = this["_" + valueName + "ChangeHandlers"];

if (o) {

for (var i = 0, n = o.length; i < n; i++) {

var methodName = "get" + valueName.charAt(0).toUpperCase() + valueName.slice(1);

o[i](this[methodName]());

}

}

}

}

var a = new Animal('zhangsan');

a.onChange('name', function(o) {

console.log("1.my name is " + o);

});

a.onChange('name', function(o) {

console.log("2.my name is " + o);

});

a.setName("zhangsanfeng");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: