为什么不喜欢往js构造函数实例对象里添加属性呢??

为什么不喜欢往js构造函数实例对象里添加属性呢??,第1张

既然使用了构造函数那你就应该用面向对象的思维模式,构造函数构造出的对象已经约定了该对象的属性和方法,无论是从便于阅读还是后期维护性上都比直接在table对象上添加方法要好的多。而且如果该对象还有父类,而你直接添加属性和方法会直接覆盖同名的父类属性和方法从而发生各种问题

this.startMove = function(evt) {

if (this.is == true)

alert('a')

if (this == document.getElementById('testdiv'))

alert("s")

}

你自己都写了this == document.getElementById('testdiv')

你在init方法里面绑定了onmousedown 方法,也没有做出改变,那么this肯定是指向this.myObj

this.is其实就是this.myObj.is,那肯定是undefined

所以如果你的is如果不是类外面需要用的话,可以直接封装起来

如下

function move2() {

var is = false//不用this.is,直接var is

this.myObj

//如果外部需要用到is,直接给move添加一个方法this.getIS = function(){return is}就好了

this.getIS = function(){return is}

this.startMove = function(evt) {

if (is == true)

alert('a')

if (this == document.getElementById('testdiv'))

alert("s")

}

this.init = function(obj) {

this.myObj = typeof obj == "string" ? document.getElementById(obj) : obj

is = true

this.myObj.onmousedown = this.startMove// 鼠标按下事件。

}

}

var mo = new move2()

mo.init("testdiv")


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11820723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存