相关疑难解决方法(0)

设置Object Literal的原型

假设我有以下代码;

var A = {a:10};
var B = {b:20};
B.prototype = A;
alert(B.a);
Run Code Online (Sandbox Code Playgroud)

我对Ba的定义不明确.难道我做错了什么?如何设置对象文字的原型?

我知道如何为Constructor对象做.所以下面的代码是完美的

function A(){this.a=10}
function B(){this.b=20}
B.prototype = new A();
b = new B;
alert(b.a);
Run Code Online (Sandbox Code Playgroud)

我如何为对象文字做到这一点?

javascript prototype prototypal-inheritance

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

是一个对象的Prototype属性,一个对象?

我已经阅读了很多关于对象原型属性的精彩文章和讨论(比如这篇),但这里有一个很大的问题.当我们观察" 原型 "属性的行为时,我们意识到它实际上是另一个对象.我们可以看到它有一个像对象一样的自己的proto和构造函数属性.

var myobj= function(){};
myobj.prototype.constructor== myobj  --> true
Run Code Online (Sandbox Code Playgroud)

所以这些是问题:

  1. "原型"本身是一个对象吗?
  2. 原型与它相关的对象(在本例中为myobj)之间的关系是什么?
  3. 为什么myobj.prototype .__ proto__默认为" Object {} ",但其构造函数是myobj
  4. 我们知道:" __proto__是在查找链中用于解析方法的实际对象,等等.原型是在__proto__创建对象时用于构建的对象".但我们可以看到,这不仅仅是原型的作用.我认为:Prototype就像一个对象的所有共享方法和属性的容器对象!然后,当使用new创建对象的实例时,其内部[[Prototype]]指向原型,其中类的共享行为和属性暴露给实例! 这是真的?

最后:似乎当我们实例化一个类时,实例的构造函数被设置为该对象原型的构造函数.这个结论能否成真?

var b= new myobj();
 b.constructor== myobj.prototype.constructor --> true
 b.constructor == myobj --> true
 myobj.prototype={};
 b.constructor == myobj  --> false
 b.constructor== Object --> true
 myobj.prototype.constructor== Object --> true
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
1
解决办法
79
查看次数

为什么会出现这种情况?__ proto__ vs prototype?

    function Obj1(name){
        this.__proto__={
            Name:name,
            getName:function(){
                alert(this.Name); 
            }


        };

    }

    function Obj2(name){
       this.prototype={
           Name:name,
           getName:function(){
           alert(this.Name); 
           };


       };

    }
    x=new Obj1("blue shark");
    z=new Obj2("red shark");
    x.getName();
    z.getName();// error:z.getName() is not a function
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么区别?有人说prototype仅用于构造函数,但在这种情况下它不起作用....相反,__proto__工作为什么?

javascript prototype

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

为什么可以检索原型但是__proto__在JavaScript中是未定义的?

现在我学习JavaScript prototype__proto__,并发现一些有用的链接

__proto__ VS. JavaScript中的原型

__proto__与constructor.prototype有何不同?

我可以在Chrome下的以下代码中获取__proto__对象的值f.

var Foo = function() {}
var f = new Foo();
f.__proto__
> Foo {} 
Run Code Online (Sandbox Code Playgroud)

但是,设置后Foo.prototype.__proto__null,价值__proto__undefined.

var Foo = function() {}
Foo.prototype = {name: 'cat', age: 10};
Foo.prototype.__proto__ = null;
var f = new Foo();
f.__proto__
> undefined 
Run Code Online (Sandbox Code Playgroud)

但我能得到的价值f.name,这是cat.这是我的理解,因为值f.name可以检索,__proto__对象f应该指向Foo.prototype.为什么价值f.__proto__undefined

javascript prototype google-chrome v8

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

someFunction.Prototype.constructor vs someFunction.constructor

我知道JavaScript中的函数首先导致函数的双重生命(作为创建实例的第一类)和普通对象的第二个函数.

但我很惊讶看到以下控制台的输出.

function A() {
    console.info("A");
}
console.info(A.prototype.constructor === A.constructor); // false
Run Code Online (Sandbox Code Playgroud)

我期望它是真实的,因为我不期望constructor对象的属性,A因为它是自己的属性.因此,在原型链查找后,它应该是同一个对象A.prototype.constructor.我错在哪里或者我遗失了什么?

javascript constructor prototype

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