【发布时间】:2019-09-10 04:31:03
【问题描述】:
什么是 JavaScript 中的实例?谁能提供一个例子吗?
另外,请解释一下你的代码。
【问题讨论】:
-
距离考试结束还有多长时间?
标签: javascript object ecmascript-6
什么是 JavaScript 中的实例?谁能提供一个例子吗?
另外,请解释一下你的代码。
【问题讨论】:
标签: javascript object ecmascript-6
instance 只是一个由类 (ES6) 或构造函数创建的对象。这是一个例子:
function Person(name) {
this.name = name;
}
var john = new Person("John Doe");
console.log(john);
//john is an instance of Person - we can see this by using the instanceof operator
console.log(john instanceof Person);
JavaScript 在定义变量时创建实例,但这些实例只能通过使用 typeof 访问,除非您明确使用 new 构造函数来创建变量:
var str = "Foo Bar";
var num = 123;
var bool = true;
var obj = { abc: "def" }
var arr = [true, 1, "s"];
console.log(typeof str);
console.log(typeof num);
console.log(typeof bool);
console.log(typeof obj);
console.log(typeof arr);
console.log(typeof undefined);
console.log(typeof null);
typeof 有一些技巧 - typeof [] == "object" 因为数组是具有几种不同方法的对象。另一个最常见的问题是typeof null == "object",因为在null 和undefined 之间创建JavaScript 时存在差异。
如果要查找任意值的构造函数,使用constructor.name:
var str = "Foo Bar";
var num = 123;
var bool = true;
var obj = { abc: "def" }
var arr = [true, 1, "s"];
console.log(str.constructor.name);
console.log(num.constructor.name);
console.log(bool.constructor.name);
console.log(obj.constructor.name);
console.log(arr.constructor.name);
这个技巧也适用于您自己的构造函数和类:
function Person(name) {
this.name = name;
}
var john = new Person("John Doe");
console.log(john.constructor.name);
【讨论】:
当你创建一个对象时! 示例:
//instancing a image
var myImage = new Image(100, 100);
//Append in to body
document.querySelector("body").appendChild(myImage);
【讨论】:
简单地说,在面向对象编程中,有类和对象。当您实例化或创建类的实例时,您将获得一个对象。
例如,采取以下 Car 类:
function Car(myVin) {
this.vin = myVin;
}
let myHonda = new Car(“24A6733HJ42983C55”);
let myFord = new Car(“JJ67100473KL93228”);
let momsMinivan = new Car(“JF293HJL679904611”);
您刚刚将 Car 类实例化了 3 次。每个都是一个实例。
ES2015(又名 ES6)引入了 class 关键字和构造函数:
class Car {
constructor(myVin) {
this.vin = myVin;
}
}
这涉及更多。
IMO,如果你真的想学习 OO 编程,最好先学习 C++ 的方式。在那里,您将看到经典继承在起作用,包括构造函数、私有、受保护和公共数据成员、设计模式和其他关键概念的概念。这将为您在深入了解 Ecmascript 经典继承这一知识之前打下坚实的基础。
在底层,Javascript 具有原型继承; Ecmascript 将经典继承贴在上面。这有点奇怪和 hacky,必须用闭包做一些奇怪的事情来实现隐私。
有关 C++ 中 OOP 的精彩课程,请参阅下面的链接。
【讨论】: