相关疑难解决方法(0)

所有浏览器的Object.watch()?

请务必阅读以下所有评论.不推荐使用Object.Watch和Object.Observe.请参阅Elliot B对更新(截至2018年6月)方法的评论.


我一直在寻找一种简单的方法来监控对象或变量的变化,我发现Object.Watch,Mozilla浏览器支持这种方式,但IE不支持.所以我开始四处寻找,看是否有人写过某种等价物.

关于我发现的唯一一件事是jQuery插件,但我不确定这是不是最好的方法.我当然在大多数项目中都使用jQuery,所以我并不担心jQuery方面......

无论如何,问题是:有人能告诉我一个jQuery插件的工作示例吗?我有问题让它工作......

或者,是否有人知道任何可以跨浏览器工作的更好的替代品?

答案后更新:

谢谢大家的回复!我试过这里发布的代码:http: //webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html

但我似乎无法使其与IE一起工作.下面的代码在Firefox中运行良好,但在IE中没有任何作用.在Firefox中,每次Object.Observe更改Object.watch()watcher.status都会调用in ,您可以在页面上看到输出.在IE中,这不会发生,但我可以看到document.write()更新值,因为最后一次watcher.watch()调用显示正确的值(在IE和FF中).但是,如果没有调用回调函数,那那就毫无意义...... :)

我错过了什么吗?

var options = {'status': 'no status'},
watcher = createWatcher(options);

watcher.watch("status", function(prop, oldValue, newValue) {
  document.write("old: " + oldValue + ", new: " + newValue + "<br>");
  return newValue;
});

watcher.status = 'asdf';
watcher.status = '1234';

document.write(watcher.status + "<br>");
Run Code Online (Sandbox Code Playgroud)

javascript jquery dom-events

116
推荐指数
5
解决办法
9万
查看次数

列出站点使用的所有js全局变量(并非全部定义!)

列出网站使用的所有全局变量的方法是什么?任何浏览器javascript调试器都可以这样做吗?使用我的意思是READ,没有改变/添加.检测iframe,也会很好.

请注意:我需要获取网站"触及"的全局变量列表.并非所有这些或已添加的或已编辑的,在站点脚本中的任何位置使用的那些.

javascript

54
推荐指数
5
解决办法
6万
查看次数

所有属性的JavaScript getter

长话短说:我的情况是我喜欢PHP式的getter,但是在JavaScript中.

我的JavaScript只在Firefox中运行,因此我可以使用Mozilla特定的JS.

我可以找到制作JS getter的唯一方法是需要指定它的名称,但是我想为所有可能的名称定义一个getter .我不确定这是否可行,但我非常想知道.

javascript getter firefox

48
推荐指数
5
解决办法
3万
查看次数

监听器在javascript对象中更改属性值

通过javascript文档,我发现javascript对象上的以下两个函数看起来很有趣:

.watch - 为属性分配值并在发生时运行函数.
.unwatch - 使用watch方法删除观察点集.

样品用法:

o = { p: 1 };
o.watch("p", function (id,oldval,newval) {
    console.log("o." + id + " changed from " + oldval + " to " + newval)
    return newval;
});
Run Code Online (Sandbox Code Playgroud)

每当我们更改"p"的属性值时,此函数都会被触发.

o.p = 2;   //logs: "o.p changed from 1 to 2"
Run Code Online (Sandbox Code Playgroud)

我在过去的几年里一直在使用javascript,从未使用过这些函数.
有人可以抛出一些好的用例,这些功能会派上用场吗?

javascript browser dom-events

20
推荐指数
3
解决办法
2万
查看次数

Javascript(ECMA-6)类魔术方法__call就像PHP一样

这是我的用例

getSomeFields(persons, fields){

    let personsWithSpecificFields = [];

    _.each(persons, (person) => {

        let personSpecificFields = {};

        _.each(fields, (field) => {
            // here im thinking to modify the field to match the method name 
            // ( if something like __call as in php is available)
            // e.g. field is first_name and i want to change it to getFirstName
            personSpecificFields[field] = person[field]();

        });

        personsWithSpecificFields.push(personSpecificFields);
    });

    return personsWithSpecificFields;
}
Run Code Online (Sandbox Code Playgroud)

这是我的 person class

import _ from 'lodash';

export default class Person{

    // not working..
    __noSuchMethod__(funcName, …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

7
推荐指数
1
解决办法
5339
查看次数

有没有办法监控对象的更改?

而是根据用户操作触发事件,您可以只监听对象的更改并做出反应吗?

javascript jquery json node.js

6
推荐指数
2
解决办法
4603
查看次数

在 Node.js 中模仿 PHP 的 __get()、__set() 和 __call() 魔术方法

我想知道是否有一种方法可以模仿 Node.js 中 PHP 的神奇方法 __get() 和 __set()。从这个问题:JavaScript getter for allproperty我知道你可以在Rhino中做到这一点,但Node是建立在V8之上的。V8有办法做到这一点吗?

javascript php v8 magic-methods node.js

5
推荐指数
1
解决办法
7613
查看次数

在javascript对象上生成通用getter和setter

可以在javascript中创建getter和setter,如下所示

Object.defineProperty
__define***__
Run Code Online (Sandbox Code Playgroud)

在所有这些实例中,属性的名称是已知的.

是否有可能创建一个通用的.

我的意思是,我有一个getter和/或setter,无论属性名称如何都会被调用.

这可能吗?如果是这样,怎么样?

问候.

注意:我在发布问题后找到了这些.看起来目前不可能作为第一个答案说明.

是否可以在JavaScript中实现动态getter/setter?

监控所有JavaScript对象属性(魔术getter和setter)

javascript

3
推荐指数
2
解决办法
2584
查看次数