class:类,是对象的模板。(或者叫:原型) this:以后对象。 以上定义,与java中的概念是雷同的。 然而,因为javascript语言本身的特点,对于class与this,还须要做进一步阐明。
留神:在javascript中,在定义类结束之后,还能够再增加属性和办法。
属性与办法增加到this上
class Point {
constructor() { }}let p = new Point();
p.username = ‘zhangsan’;
console.log(p.username); //zhangsan
下面代码中,Point类定义之后,给对象 p 又增加了一个username属性。这是齐全能够的。 跟单网www.gendan.com然而要留神:此种形式,仅仅是给对象p增加一个属性,而不是给类增加一个属性。 或者说: 此种形式,仅仅是给对象p的this增加一个属性,而不是给类增加一个属性。
class Point {
constructor() { }}let p1 = new Point();
p1.username = ‘zhangsan’;
console.log(p1.username); //zhangsan
let p2 = new Point();
console.log(p2.username); //undefined
下面例子中,只给对象p1增加了username属性,但没有给类增加属性。 所以,p2对象中并没有username属性。
属性与办法增加到类上
class Point {
constructor() { }}
Point.prototype.username = ‘zhangsan’;
let p1 = new Point();
console.log(p1.username); //zhangsan
let p2 = new Point();
console.log(p2.username); //zhangsan
下面代码中,应用 Point.prototype形式,给类增加属性。 这样,类的所有对象(p1、p2)就都有username属性了。
在javascript中,每一个类都有一个prototype,它就是类的原型,类的所有实例共享一个原型。如果想拜访这个原型,能够应用proto指针。
样例代码:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
class Point {
constructor() { }
}
let p = new Point();
console.log(p.__proto__); //留神proto指针的写法
/**
* 输入后果:
* {constructor: ƒ}
* constructor: class Point //这里证实:proto指针指向类的原型
* __proto__: Object
*/
let p1 = new Point();
let p2 = new Point();
//这里证实:类的所有实例共享一个原型
console.log(p1.__proto__===p2.__proto__); //true
</script>
</body></html>
发表回复