JavaScript伪类模式
JavaScript Pseudoclasses Pattern
本文关键字:模式 JavaScript 更新时间:2023-09-26
嗨,我是JavaScript的新手,我正在研究对象创建模式,尤其是伪类模式,所以我写了几行代码来检查我是否得到了这个概念:
var Car = function (name, x, y) {
this.name = name;
this.x = x;
this.y = y;
};
Car.prototype.drive = function (byX, byY) {
this.x += byX;
this.y += byY;
};
var ferrari = new Car("Ferrari", 5, 5);
ferrari.drive(5, 5);
var ferrari_proto = Object.getPrototypeOf(ferrari);
var ferrari_proto_proto = Object.getPrototypeOf(ferrari_proto);
var ferrari_proto_proto_null = Object.getPrototypeOf(ferrari_proto_proto);
console.log(ferrari_proto); // Should be Function
console.log(ferrari_proto_proto); // Should be Object
console.log(ferrari_proto_proto_null); // Should be Null
我从运行代码中得到的是:
{ drive: [Function] }
{ }
null
并记录我得到的这些对象的类型:
object
object
object
现在,我想的是,以这种方式创建对象,法拉利的原型将是汽车功能,所以我期望的是:
function // Tha Car function
object // The Function prototype, that is Object
object // null, that is the end of the chain
有人可以解释我为什么得到这些输出,为什么我错了?!
法拉利的原型应该是汽车功能
不,您的ferrari
的原型(它从中继承的对象)是Car.prototype
——您将方法(如.drive
)放在那里。Car
构造函数与此不同。
在JavaScript函数中,数组也被视为对象。因此,日志可能正在返回基本类型。
这里有一个很好的资源来理解使用JavaScript原型。
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 包含圆括号的JavaScript Regex模式
- 用于操纵DOM API的Javascript设计模式
- 用javascript创建一个看起来正常分布的模式
- 揭示模块模式(JavaScript) - 这无法访问私有方法
- 匹配每个字符,直到在行首出现模式(JavaScript)
- 用于处理成功、失败、重试的异步请求的设计模式?(JavaScript)
- 模块模式javascript不是函数
- 从自定义模块模式Javascript库调用XMLHttpRequest时不会发生任何事情
- 浏览器中的观察者模式javascript:订阅事件"添加了Dom元素“;并处理这个元素
- IE11在Iframe下的怪癖模式-javascript错误
- 返回具有链接模式javascript的项
- 命令模式 JavaScript 中的执行函数
- gsp下拉值返回NaN在IE7文档模式(javascript)
- 动态模式Javascript
- 保持服务器时间,即使在离线模式(javascript/html5)
- 我如何专业地构建我的模块模式Javascript项目
- 怪癖模式 - JavaScript 不会更新表单选择选项
- 设计模式- JavaScript.安全提取深层(可能不存在)对象属性的通用函数