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


       
    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

  • 相关阅读:
    mysql慢查询日志功能的使用
    回顾JavsScript对象的克隆
    JavaScript的几种继承方式
    再谈JavaScript中的闭包
    重温JavaScript预编译的四个步骤
    PHP常用设计模式
    编译 php-memcache 扩展时提示Cannot find autoconf
    CentOS 7 下编译安装lnmp之PHP篇详解
    CentOS 7 下编译安装lnmp之MySQL篇详解
    MySQL的转义符 ` 作用
  • 原文地址:https://www.cnblogs.com/Longhua-0/p/9285727.html
Copyright © 2020-2023  润新知