Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 功能对象基础。如何超越简单的容器?_Javascript_Function_Object_Syntax_Attributes - Fatal编程技术网

Javascript 功能对象基础。如何超越简单的容器?

Javascript 功能对象基础。如何超越简单的容器?,javascript,function,object,syntax,attributes,Javascript,Function,Object,Syntax,Attributes,在上边我有点乐观,下边我被ADD弄得焦头烂额。如果我有一个简单的例子,符合我已经理解的,我就明白了。我希望这里有人能帮我弄到它 我有一个页面,每隔一段时间轮询服务器,处理数据,将其存储在对象中,并在div中显示。它使用全局变量,并输出到html中定义的div。我必须把它放到一个对象中,这样我才能创建多个实例,指向不同的服务器,并分别管理它们的数据 我的代码基本上是这样构造的 HTML <div id="server_output" class="data_div"></div&

上边我有点乐观,下边我被ADD弄得焦头烂额。如果我有一个简单的例子,符合我已经理解的,我就明白了。我希望这里有人能帮我弄到它

我有一个页面,每隔一段时间轮询服务器,处理数据,将其存储在对象中,并在div中显示。它使用全局变量,并输出到html中定义的div。我必须把它放到一个对象中,这样我才能创建多个实例,指向不同的服务器,并分别管理它们的数据

我的代码基本上是这样构造的

HTML

<div id="server_output" class="data_div"></div>
我如何将其格式化为一个对象,其中全局变量定义为属性,成员函数(?)最好是在创建时构建自己的输出div,并返回对它的引用。所以我可以做一些像

dataOne = new MyDataDiv('http://address/?client');
dataOne.style.left = "30px";

dataTwo = new MyDataDiv('http://different/?client');
dataTwo.style.left = "500px";
var server = new ServerObject("http://some.net/address");
server.variable = newValue; // access object variables
我的代码实际上比这复杂得多,但我想如果我能理解这一点,我可以把它应用到我已经得到的东西上。如果我有什么要求,那是不可能的,请告诉我。我打算弄清楚这一点,而且会的。只要把问题打出来就可以帮助我的大脑更好地理解我到底想做什么

一如既往。。。任何帮助都是帮助

谢谢

跳过

更新: 我已经有了这个

$("body").prepend("<div>text</div>");
this.test = document.body.firstChild;
this.test.style.backgroundColor = "blue";
$(“正文”)。前置(“文本”);
this.test=document.body.firstChild;
this.test.style.backgroundColor=“蓝色”;
这是在代码中创建的div,以及可以返回的引用。将它粘贴到函数中,它就工作了

再次更新: 我用一个原型函数创建了可拖动的弹出窗口,并将其作为对象进行操作。这是我的建议。那是我的第一把小提琴!弹出窗口是我的项目的关键,据我所知,数据功能将很容易实现。

这非常接近:

// globals
var pairs = {
    { div : 'div1', url : 'http://some.net/address?client=Some+Client' } ,
    { div : 'div2', url : 'http://some.net/otheraddress?client=Some+Client' } ,
};

var since_record_id; //?? not sure what this is
var intervals = [];

// window onload
window.onload(){  // I don't think this is gonna work

    for(var i; i<pairs.length; i++) {
        getRecent(pairs[i]);
        intervals.push(setInterval(function(){
            pollForNew(map[i]);
        }, 300000));
    }
}

function getRecent(map){
    var url = map.url + '&recent=20';
    // do stuff here to retrieve the resource
    var content = loadResoucrce(url);  // must define this
    var elt = document.getElementById(map.div);
    elt.innerHTML = content;
}

function pollForNew(map){
    var url = map.url + '&since_record_id=' + since_record_id;
    var content = loadResoucrce(url); // returns an html fragment
    var elt = document.getElementById(map.div);
    elt.innerHTML = content;
}

但是对于
d1
d2
,你能做的不多。您可以调用cancel()停止更新。我想你可以添加更多的函数来扩展它的功能。

好的,找到我需要的。这很直截了当

首先,忽略window.onload,该对象被定义为一个函数,当您实例化一个新对象时,它将运行该函数。在函数中执行设置

其次,对于希望使对象成为局部的全局变量,只需将它们定义为
this.variable\u name。这些变量在整个对象及其成员函数中可见

第三,将成员函数定义为
object.prototype.function=function(){}

第四,对于我的例子,对象函数应该
返回这个这允许常规程序流使用点符号检查对象的变量

这就是我一直在寻找的答案。它接受我的非函数示例代码,并将其作为对象重新打包

function ServerObject(url){
  // global to the object
  this.server_url = url;
  this.data = new Object();
  this.since_record_id;
  this.interval_id;

  // do the onload functions
  this.getRecent();

  this.interval_id = setInterval(function(){
    this.pollForNew();
  }, 300000);

  // do other stuff to setup the object

  return this;
}

// define the getRecent function
ServerObject.prototype.getRecent = function(){
  // do getRecent(); stuff
  // reference object variables as this.variable;
}

// same for pollForNew();
ServerObject.prototype.pollForNew = function(){  
  // do pollForNew(); stuff here.
  // reference object variables as this.variable;
}
然后在你的程序流程中,你会做一些像

dataOne = new MyDataDiv('http://address/?client');
dataOne.style.left = "30px";

dataTwo = new MyDataDiv('http://different/?client');
dataTwo.style.left = "500px";
var server = new ServerObject("http://some.net/address");
server.variable = newValue; // access object variables
我在第一篇文章中提到了这个插件。我很聪明,知道物体有多复杂,当我寻找例子和解释时,它们会暴露出某些复杂的层次,这些复杂的层次会让我的大脑游动。很难深入到让你从底层开始的简单规则。“这个”的范围是什么?当然,总有一天我会明白的,但简单的事实是,你必须引用“这个”

谢谢

我希望我能提供更多


Skip

你说“我不知道你为什么想要一个这么简单的任务。”这只是一个简单的例子,它们将是可拖动的弹出窗口,单独的推特流。他们将管理自己的拖动功能,并完全自主于其他页面活动。事实上,我有一个非常棒的推特栏目。现在我只想说“新”。就像我前面说的,如果我能把头脑放在简单的东西上,我就能把它扩展到复杂的东西上。那就行了。
getRecent()
pollForNew()
不会被公开调用,因此它们可以是私有的var函数。这样定义的话,他们就不能引用
this
来访问成员属性(如interval或div等)。您需要的任何其他公共成员函数都应该添加到原型中,正如我为
cancel()
所示。它们可以引用此
。定义私有函数中的所有内容,以保持全局命名空间干净。祝你好运。我看到你在定义对象中内联函数的逻辑,这就是我要做的
因为
pollForNew()使用了_记录_id
。从我发布的答案中可以看出,我只是在寻找最简单的对象语法。我们都得从某个地方开始。:)谢谢你的意见。
var server = new ServerObject("http://some.net/address");
server.variable = newValue; // access object variables