我想知道创建一个具有属性和方法的JavaScript对象的最佳方法是什么.
我已经看到了这个人在所有函数中使用var self = this然后使用的示例,self.以确保范围始终正确.
然后我看到了使用.prototype添加属性的示例,而其他人则使用内联方式.
有人可以给我一个具有一些属性和方法的JavaScript对象的正确示例吗?
所以这些年来我终于停止了我的脚,并决定"正确"学习JavaScript.语言设计中最令人头疼的元素之一是它的继承实现.有Ruby经验,我很高兴看到闭包和动态打字; 但是对于我的生活来说,无法弄清楚使用其他实例进行继承的对象实例会带来什么好处.
javascript oop inheritance language-design prototype-programming
我目前正在从Java转换为Javascript,我有点难以弄清楚如何按照我希望的方式扩展对象.
我见过互联网上有几个人使用一种名为extend on object的方法.代码如下所示:
var Person = {
name : 'Blank',
age : 22
}
var Robot = Person.extend({
name : 'Robo',
age : 4
)}
var robot = new Robot();
alert(robot.name); //Should return 'Robo'
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使这项工作?我听说你需要写
Object.prototype.extend = function(...);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使这个系统工作.如果不可能,请告诉我另一个扩展对象的替代方案.
原型系统看起来比传统的类系统更灵活,但人们似乎对所谓的"最佳实践"感到满意,它模仿了传统的类系统:
function foo() {
// define instance properties here
}
foo.prototype.method = //define instance method here
new foo()
Run Code Online (Sandbox Code Playgroud)
原型系统必须具备其他所有灵活性.
在模仿课程之外是否有用于原型系统的用途?什么样的东西原型可以做哪些类不能,或者没有?
在PHP中,我使用的特征,其之前是分离出可重用的代码与通常使事情更易读的一个很好的方式.
这是一个具体的例子:(特征和类可以在单独的文件中).我怎么能在nodejs中这样做?
<?php
trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
..more functions..
}
class TheWorld {
use HelloWorld;
}
$o = new TheWorldIsNotEnough();
$o->sayHello();
?>
Run Code Online (Sandbox Code Playgroud)
在Nodejs中,我看过看起来非常流行的Stampit,但是肯定有一种简单的方法可以在一个漂亮的OOP中编写函数并在nodejs中使其更具可读性而不依赖于包?
谢谢你的时间!
在过去的一周里,我一直试图理解基于类和原型继承之间的区别.在使用PHP和JavaScript之后,我希望能够很快掌握这一点,但我无法理解这一点 - 我总觉得我想念一些东西.
我已经知道一个类就像定义一个对象特征的蓝图.实例化类时,根据蓝图构造对象.当继承发挥作用时,蓝图只能被完全采用,但方法可以被覆盖.
那么什么是原型呢?它是不是也像蓝图,但已经实施(因此称为"原型")?那么继承,你只能指向现有的功能?
以下可能看起来很傻,但这就是我尝试理解事物的方式.
从更人性的角度来说:一个类可以被视为架构计划,一旦它被实例化,小工人就会根据该计划开始构建一个对象.要继承某些内容,除了新的详细信息(可能会替换现有详细信息)之外,还会再次构建完整的计划.
使用原型,工作人员开始复制已经存在的对象并开始查看它的主要特征(存储在称为原型的东西上).为了从另一个对象继承,他们只是在某处写了一个标语"你正在寻找X的功能?请这样 - 注意对象之间的差距".
这种区别是否正确?
javascript ×6
prototype ×3
extends ×1
function ×1
inheritance ×1
node.js ×1
object ×1
oop ×1
php ×1