小编Paw*_*phy的帖子

原型上的Javascript私有成员

好吧,我试图弄清楚这有可能以任何方式.这是代码:

a=function(text)
{
   var b=text;
   if (!arguments.callee.prototype.get)
      arguments.callee.prototype.get=function()
    {
         return b;
    }
    else
      alert('already created!');
}

var c=new a("test");  // creates prototype instance of getter
var d=new a("ojoj");  // alerts already created
alert(c.get())        // alerts test 
alert(d.get())        // alerts test from context of creating prototype function :(
Run Code Online (Sandbox Code Playgroud)

如你所见,我试图创建原型getter.为了什么?好吧,如果你写这样的东西:

a=function(text)
{
    var b=text;
    this.getText=function(){ return b}
}
Run Code Online (Sandbox Code Playgroud)

......一切都应该没问题......但实际上每次创建对象时 - 我都会创建使用内存的getText函数.我想在记忆中有一个原型功能可以做同样的事情...任何想法?

编辑:

我试过Christoph给出的解决方案,它似乎是目前唯一已知的解决方案.它需要记住id信息以从上下文中检索值,但是整个想法对我来说很好:) Id只是要记住的一件事,其他一切都可以在内存中存储一​​次.实际上,您可以通过这种方式存储许多私有成员,并且只能使用一个id.实际上这让我很满意:)(除非有人有更好的主意).

someFunc = function()
{
  var store = new Array();
  var guid=0;
  var someFunc = function(text)
  {
    this.__guid=guid;
    store[guid++]=text; …
Run Code Online (Sandbox Code Playgroud)

javascript prototype private

17
推荐指数
1
解决办法
2万
查看次数

Javascript局部变量声明

基本上这是一个如何访问本地范围处理程序的问题.我试图为全局变量定义实现类似的东西,如:

window['newObject'] = "some string";
alert(newObject);
Run Code Online (Sandbox Code Playgroud)

但对于当地范围.现在我只有解决方案是使用evals:

eval("var newObject='some string'");
Run Code Online (Sandbox Code Playgroud)

但这是一个非常丑陋的解决方案......最好的方法就是在window []解决方案中使用一些本地范围的引用,但我从来没有听说过任何对本地范围的引用......有什么想法吗?

示例如下:

function x(arg)
{
   localScope[arg.name]=arg.value;
   alert(sex);
}

x({name:"sex", value:"Male"});
Run Code Online (Sandbox Code Playgroud)

javascript variables local definition

8
推荐指数
2
解决办法
7165
查看次数

"a = object,object"的Javascript语法

昨天我发现了这个功能:

function clone(obj) {
    return typeof obj === 'undefined' ?
        this : (clone.prototype = Object(obj), new clone);
}
Run Code Online (Sandbox Code Playgroud)

我虽然在Javascript中看到了很多,但这种语法对我来说不得而知:

 clone.prototype = Object(obj), new clone
Run Code Online (Sandbox Code Playgroud)

谁能解释我怎么读这个?你能给我链接到正确的定义吗?我在Mozilla的MDC中找不到它,也不知道如何在网上找到它,但这是我第一次看到这种语法.感谢您的努力.

最终解决方案

我根据这里的答案做了一些测试,我找到了:

var b;
b=alert('test'),6;
alert(b);  // alert undefined
b=5,alert('test2');
alert(b);  // alert 5
Run Code Online (Sandbox Code Playgroud)

感谢christoph研究我们发现了更多:

var a, b, c;
a = 1, 2;   // a is 1
(b = 1), 2; // b is 1 - same as above!
c = (1, 2); // c is 2
Run Code Online (Sandbox Code Playgroud)

啊,我也在IE6上测试它,它的工作原理,所以这必须是旧的语法,没有关于它的信息?:(奇怪......

你们两个都给了很好的解决方案,感谢这里的解决方案!

javascript syntax

2
推荐指数
1
解决办法
436
查看次数

标签 统计

javascript ×3

definition ×1

local ×1

private ×1

prototype ×1

syntax ×1

variables ×1