javascript - 对象的属性更改时会激活功能吗?

标签 javascript oop object properties

我有一个物体,在本例中是一辆法拉利。例如,当使用 ferrari.speed = 90; 更改速度时,我希望此属性对更改执行一些操作,例如使用函数更改屏幕上法拉利的速度。

我想知道最简单、最不疯狂的方法是什么?

这是一个jsfiddle:

http://jsfiddle.net/qhV7B/3/

<button id="addspeed">speed up!!</button>
<button id="checkspeed">Check the speed!</button>


function car(){
    speed: 0;
    //Do something about speed change here? if its changed at all, greater or smaller?
}
document.getElementById('addspeed').onclick = function speedchange(){
    ferrari.speed++;
}
document.getElementById('checkspeed').onclick = function checkspeed() {
    alert(ferrari.speed);
}
var ferrari = new car();
ferrari.speed = 10;

最佳答案

集合运算符是您正在寻找的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/set

这是我的解决方案 http://jsfiddle.net/qhV7B/6/ .

function car(){
}

car.prototype = {
    hidden_speed: 0,
    set speed(v){
        //special action
        alert("I changed value to " + v);
        this.hidden_speed = v;
    },
    get speed(v){
        return this.hidden_speed;
    },
};

var ferrari = new car();
ferrari.speed = 10;

document.getElementById('addspeed').onclick = function speedchange(){
    ferrari.speed = (ferrari.speed + 1);
}
document.getElementById('checkspeed').onclick = function checkspeed() {
    alert(ferrari.speed);
}

关于javascript - 对象的属性更改时会激活功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928541/

相关文章:

Java封装概念不是很清楚

javascript - 如何向数组添加项目而不在回调函数外部声明数组?

Java一步传递两个对象

javascript - 拉斐尔演示饼图调整以添加自定义颜色

javascript - 旋转后的3D坐标

javascript - 如何将脚本包装在setTimeout中

javascript - 当 ob1.prototype 未定义时,Object.create() 如何从 ob1.prototype 创建 obj2.__proto__ ?

javascript - 如何使这个 JavaScript 弹出窗口模式化?

java - 随机生成数字的问题 - Java

php - 不需要任何 PECL 扩展的纯 PHP 中的 AOP(开始!)- 怎么做?