即时学习JavaScript和即时通讯试图了解的关键差异。 我可以使用Object.create(someName)
创建对象,我可以使用 Object.create(someName.prototype)
创建对象,但我不太了解关键区别。 我应该把属性作为常规属性吗? 像someName.a
或someName.prototype.a
? 它对我来说有点混乱。 我明白,当使用Object.Create
即时定义我的对象原型链与对象即时指定,但我可以指定要么someName
或someName.prototype
,但我似乎无法完全理解的差异和最佳做法。 非常感谢您的帮助。 :)Object.Create与Object.create(名称)与Object.create(name.prototype)
0
A
回答
0
Object.create
创建一个新对象,其原型是作为整个函数的第一个参数传递的对象。
在JavaScript中,prototype
属性与特殊权力一个有规则的,但正如我已经说过,它仍然是一个常规对象。
因此,何时与x或x.prototype一起去的问题取决于您的要求。
例如:
var obj = { name: "Matías" };
// This will create a new object whose prototype
// is the object contained in the "obj" variable
var obj2 = Object.create(obj);
事实上,对象不拥有prototype
属性。您可以使用另一种方法,当你想创建一些构造函数的原型对象:
var A = function() {};
A.prototype.doStuff =() => {
// do stuff here
};
// A common mistake is to provide A instead of A.prototype.
// In JavaScript, even functions are objects, hence if you provide
// A instead of A.prototype, the prototype of the newly created object
// will be the function A and its members, not the ones that would be available
// creating an object like this: new A()
var B = Object.create(A.prototype);
B.doStuff();
var C = Object.create(A);
// Function "doStuff" is undefined!!
C.doStuff();
+0
谢谢,现在更清楚:)! –
相关问题
- 1. Object.create vs
- 2. jqGrid 4.13.0错误与IE8 Object.create
- 3. 用的Object.create
- 4. 了解Object.create
- 5. Javascript object.create和isPrototypeOf
- 6. Object.create和init
- 7. Object.create源码解释?
- 8. 的Object.create和私人
- 9. 的Object.create和继承
- 10. proto链接和Object.create
- 11. 解释Object.create(),新的
- 12. 的Object.create和原型
- 13. JavaScript的继承Object.create
- 14. VAR B =的Object.create(一)与变种B = A
- 15. Javascript原型通过Object.create()
- 16. 从Object.create获取密钥
- 17. 使用的Object.create代替setPrototypeof
- 18. 使用Object.create()继承JavaScript?
- 19. 等效于Python的Object.create()
- 20. 旧的IE的JavaScript Object.create
- 21. 的Object.create方法以JavaScript
- 22. Javascript Object prototype and Object.create method
- 23. Object.create从一个对象
- 24. 的Object.create,链接和 '本'
- 25. Object.create和内置对象
- 26. 原型OO与Object.create和命名构造函数
- 27. Object.create中的枚举参数是什么?
- 28. 使用Object.create的角度服务继承()
- 29. Object.create(someObject)函数不会继承属性
- 30. 为什么Object.create()如此冗长?
'someName'指的是一个对象,而'someName.prototype'指的是另一个对象,所以哪一个你应该使用Object.create()真的取决于你想要达到的目标。同样,在'someName.a'或'someName.prototype.a'之间进行选择取决于您想要实现的内容 - 如果您将属性添加到原型,那么具有该原型的* all *对象将有权访问它,这是其他时间有助于帮助。 – nnnnnn
非常感谢! –