静态方法、实例方法、继承

   
var x ={x:5};
var y = new Object(x);
x === y;                        //true
y._proto_ == x.prototypr;       //true

  

y没有prototype属性,只有一个内部指针_proto_指向x的prototype属性!

结论:y的原型指向x的prototype属性。                         //或者说y继承x的prototype的属性。

 //静态方法
    smile.book = function () {
        alert('This is a book!');
    };

    //实例方法
    smile.prototype.buy = function (name) {
        alert('This is a ' + name);
    };

 //直接访问

smile.book();     //This is a book!

//对象实例化
var sun = new smile('Amy');           /*实现继承*/ ↑↑                  smile是构造函数,方便给它一个名头:类。         

实例化后,sun中一个指针(_proto_)指向smile的prototype属性!或者说sun继承它的公开方法与属性,同时可'.'访问smile中this.xxx(公开变量、函数)。 

 
sun.buy('javascript权威指南');     //output:  This is a javascript权威指南

公式:sun._proto_ = smile.prototype;

一直往_proto_往上找,直至找着为止。这就是原型链!!!

 因为 JavaScript 中没有类的概念,所以 JavaScript 中的构造函数即可以看做是类,JavaScript 中 new 是构造函数的典范。

OOP中类是啥?没有类概念,姑且把构造函数当作类吧!
构造函数具体含义?继承,对象实例化,类,_proto_

JavaScript是一门解释型的语言,它并不是真正的面向对象的语言,很多面向对象的机制是需要靠模仿来实现的。

在类中用this.属性名的方式定义公有变量,var.属性名定义私有变量!!

一、模仿类定义:

function smile(x,y) {

    this.box    = x; 

    this.apple = y;

}

对象实例:

var  love = new smile(2018,2019);

alert(love.box);               //输出2018

二、再模仿一个简单OOP编程:

function smile(x,y,z) {
    this.pear = x;
    this.book = y;
    this.buy = function () {
        return z;
    }
}

var sun = new smile(1,2,17);
alert(sun.buy());                    //输出17

友情链接:https://www.jianshu.com/p/4a5170bc9afd

原文地址:https://www.cnblogs.com/Longhua-0/p/9285727.html