我正在尝试学习面向对象的javascript.使用一种简单的方法,我想这样做:
var users = function(url){
this.url = url;
this.log = function(){
console.log(this.url);
}
}
var apiPoint = "https://www.zenconomy.se/api/admin/tracking?format=json"
var liveUsers = new users(apiPoint)
liveUsers.log()
Run Code Online (Sandbox Code Playgroud)
但是,我已经了解到,在使用普通函数时将变量传递给函数通常是一个好主意,但在对象中,这看起来有点笨拙.
var users = function(url){
this.url = url;
this.log = function(url){
console.log(url);
}
}
var apiPoint = "here is my url"
var liveUsers = new users(apiPoint)
liveUsers.log(liveUsers.url)
Run Code Online (Sandbox Code Playgroud)
两种方法都有效.假设users.log只需要来自users-class内部的属性,那么不同方法的优缺点是什么.
你刚才提到你正在尝试用javascript学习OOP,但实际上,考虑你的user对象中的日志函数,如果没有用户实例,也没有log方法。根据 C++ 或 C# 中的 OO,这不是同一概念。在我看来,prototype最好的描述 oop 的方法如下:
var users = function(url){
this.url = url;
}
users.prototype.log = function(){
console.log(this.url);
}
Run Code Online (Sandbox Code Playgroud)
这样,log就不会存在于 的任何实例中users,它存在于的任何实例中__proto__的引用中prototype。这意味着当您创建实例时,它们共享所有功能,与 C++ 或 C# 相同。最后,你不应该在你的帖子中使用第二个示例,这不是面向对象的事情。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |