:
let user = {
name: "John",
age: 30
};
JavaScript
user Hello :
let user = {
name: "John",
age: 30
};
user.sayHi = function() {
alert("Hello!");
};
user.sayHi(); // Hello!
user.sayHi
user.sayHi() !
user sayHi
:
let user = {
// ...
};
//
function sayHi() {
alert("Hello!");
};
//
user.sayHi = sayHi;
user.sayHi(); // Hello!
(object-oriented programming), OOP
OOP E.Gamma, R.Helm, R.Johnson, J.Vissides Design Patterns: Elements of Reusable Object-Oriented Software G.Booch Object-Oriented Analysis and Design with Applications
:
//
let user = {
sayHi: function() {
alert("Hello");
}
};
//
let user = {
sayHi() { // "sayHi: function()"
alert("Hello");
}
};
"function" sayHi()
()
this
user.sayHi() user
this
this
:
let user = {
name: "John",
age: 30,
sayHi() {
// "this" ""
alert(this.name);
}
};
user.sayHi(); // John
user.sayHi() this user
this :
let user = {
name: "John",
age: 30,
sayHi() {
alert(user.name); // "this" "user"
}
};
user admin = user user
:
let user = {
name: "John",
age: 30,
sayHi() {
alert( user.name ); //
}
};
let admin = user;
user = null; //
admin.sayHi(); // Whoops! sayHi() ! !
alert user.name this.name
this
JavaScript this
:
function sayHi() {
alert( this.name );
}
this
2 "this ":
let user = { name: "John" };
let admin = { name: "Admin" };
function sayHi() {
alert( this.name );
}
// 2
user.f = sayHi;
admin.f = sayHi;
// this
// "this" ""
user.f(); // John (this == user)
admin.f(); // Admin (this == admin)
admin['f'](); // Admin ()
obj.f() f this obj user admin
this == undefined:
function sayHi() {
alert(this);
}
sayHi(); // undefined
strict this undefined this.name
strict ( use strict ) this ( window) "use strict"
this this
this this this
JavaScript this
this 1
this
this this
arrow() user.sayHi() this :
let user = {
firstName: "Ilya",
sayHi() {
let arrow = () => alert(this.firstName);
arrow();
}
};
user.sayHi(); // Ilya
object.doSomething()-
this
this
-
thisthis -
object.method()thisobject
this this
<code><pre>10(plnkr, JSBin, codepen)