????д?????
????????????????????????????????????
???????????
????????????????????????JavaScript???????????д???????????!
????1. ??????
????function createPerson(name) {
????var o = new Object();
????o.name = name;
????o.getName = function () {
????console.log(this.name);
????};
????return o;
????}
????var person1 = createPerson('kevin');
???????????????????????????Object
????2. ??????????
????function Person(name) {
????this.name = name;
????this.getName = function () {
????console.log(this.name);
????};
????}
????var person1 = new Person('kevin');
??????????????????????????????
?????????δ?????????????????????????
????2.1 ???????????
????function Person(name) {
????this.name = name;
????this.getName = getName;
????}
????function getName() {
????console.log(this.name);
????}
????var person1 = new Person('kevin');
???????????????????????????′?????????
??????????????……
????3. ?????
????function Person(name) {
????}
????Person.prototype.name = 'keivn';
????Person.prototype.getName = function () {
????console.log(this.name);
????};
????var person1 = new Person();
??????????????????′???
???????1. ???е??????????????? 2. ????????????
????3.1 ????????
????function Person(name) {
????}
????Person.prototype = {
????name: 'kevin'??
????getName: function () {
????console.log(this.name);
????}
????};
????var person1 = new Person();
??????????????????
?????????д???????????constructor????
????3.2 ????????
????function Person(name) {
????}
????Person.prototype = {
????constructor: Person??
????name: 'kevin'??
????getName: function () {
????console.log(this.name);
????}
????};
????var person1 = new Person();
?????????????????constructor????????????????
???????????????е????????
????4. ?????
????????????????????????贍?
????function Person(name) {
????this.name = name;
????}
????Person.prototype = {
????constructor: Person??
????getName: function () {
????console.log(this.name);
????}
????};
????var person1 = new Person();
????????ù????????????е???У???ù?????
????????е???????????д????????????????
????4.1 ????????
????function Person(name) {
????this.name = name;
????if (typeof this.getName != "function") {
????Person.prototype.getName = function () {
????console.log(this.name);
????}
????}
????}
????var person1 = new Person();
?????????????????????????????????????д???
???????????????
????function Person(name) {
????this.name = name;
????if (typeof this.getName != "function") {
????Person.prototype = {
????constructor: Person??
????getName: function () {
????console.log(this.name);
????}
????}
????}
????}
????var person1 = new Person('kevin');
????var person2 = new Person('daisy');
????// ???? ????и÷???
????person1.getName();
????// ?????????????????????????е??
????person2.getName();
????????????????????迪????var person1 = new Person('kevin')??
?????????new??apply??????й??????????????????????????????е??????
????????????new???????裺
????1????????????????
????2????????????????Person.prototype
????3?????Person.apply(obj)
????4?????????????
??????????????????apply???????裬?????obj.Person????????????????if????????????????????prototype????????????????????????????????????Person.prototype???????????????????????person1?????????????????????????Person.prototype????????????????getName????????????????!
????????????????????????д??????????????????
function Person(name) {
this.name = name;
if (typeof this.getName != "function") {
Person.prototype = {
constructor: Person??
getName: function () {
console.log(this.name);
}
}
return new Person(name);
}
}
var person1 = new Person('kevin');
var person2 = new Person('daisy');
person1.getName(); // kevin
person2.getName();  // daisy
????5.1 ????????????
????function Person(name) {
????var o = new Object();
????o.name = name;
????o.getName = function () {
????console.log(this.name);
????};
????return o;
????}
????var person1 = new Person('kevin');
????console.log(person1 instanceof Person) // false
????console.log(person1 instanceof Object)  // true
????????????????????????????????????? ????-??????-?????????????????????????????
?????????????????????????????????????????????instanceof????????????!
?????????????????????????????á???????????????????ж??????????????飬???????????????Array???????????????????д??
function SpecialArray() {
var values = new Array();
for (var i = 0?? len = arguments.length; i < len; i++) {
values.push(arguments[i]);
}
values.toPipedString = function () {
return this.join("|");
};
return values;
}
var colors = new SpecialArray('red'?? 'blue'?? 'green');
var colors2 = SpecialArray('red2'?? 'blue2'?? 'green2');
console.log(colors);
console.log(colors.toPipedString()); // red|blue|green
console.log(colors2);
console.log(colors2.toPipedString()); // red2|blue2|green2
???????????????ν????????????????????????????????????????????new??????????????????????
??????????????????????????????Array??????SpecialArray???????specialarray?????????????????????????????????????ò??????
????????????????????????£???????????????
???????????????????????????е??????
????for (var i = 0?? len = arguments.length; i < len; i++) {
????values.push(arguments[i]);
????}
?????????滻???
????values.push.apply(values?? arguments);
????5.2 ???????????
function person(name){
var o = new Object();
o.getName = function(){
console.log(name);
};
return o;
}
var person1 = person('kevin');
person1.sayName(); // kevin
person1.name = "daisy";
person1.sayName(); // kevin
console.log(person1.name); // daisy
??????ν??????????????й???????????????????????this?????
??????????????????????????
????· ?′??????????????????this
????· ?????new?????????ù?????
?????????????????Щ?????????С?
???????????????????????????????????????????????