js对象(2)「建议收藏」

js对象(2)「建议收藏」1.JavaScript原型如果所有对象都有私有字段[[prototype]],就是对象的原型;读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。操作原型的三种方法:Object.create根据指定的原型创建新对象,原型可以是null;Object.getPrototypeOf获得一个对象的原型;Object.setPrototypeOf设置一个对象的原型。varcat={say(){

大家好,又见面了,我是你们的朋友全栈君。

1 . JavaScript原型
如果所有对象都有私有字段[[prototype]],就是对象的原型;
读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。

操作原型的三种方法:
    Object.create 根据指定的原型创建新对象,原型可以是 null;
    Object.getPrototypeOf 获得一个对象的原型;
    Object.setPrototypeOf 设置一个对象的原型。

    var cat = {
        say(){
            console.log("meow~");
        },
        jump(){
            console.log("jump");
        }
    }
    var tiger = Object.create(cat,  {
        say:{
            writable:true,
            configurable:true,
            enumerable:true,
            value:function(){
                console.log("roar!");
            }
        }
    })
    var anotherCat = Object.create(cat);
    anotherCat.say();
    var anotherTiger = Object.create(tiger);
    anotherTiger.say();

new运算接收一个构造器和一组调用参数:
    以构造器的 prototype 属性(注意与私有字段[[prototype]]的区分)为原型,创建新对象;
    将 this 和调用参数传给构造器,执行;
    如果构造器返回的是对象,则返回,否则返回第一步创建的对象。

    用构造器模拟类的两种方法( 旧版本 ):

        function c1(){
            this.p1 = 1;
            this.p2 = function(){
                console.log(this.p1);
            }
        }
        var o1 = new c1;
        o1.p2();



        function c2(){
        }
        c2.prototype.p1 = 1;
        c2.prototype.p2 = function(){
            console.log(this.p1);
        }

        var o2 = new c2;
        o2.p2();


    第一种方法是直接在构造器中修改 this,给 this 添加属性。
    第二种方法是修改构造器的 prototype 属性指向的对象,它是从这个构造器构造出来的所有对象的原型。
  1. ES6中的类
    基本写法:

     class Rectangle {
       constructor(height, width) {
         this.height = height;
         this.width = width;
       }
       // Getter
       get area() {
         return this.calcArea();
       }
       // Method
       calcArea() {
         return this.height * this.width;
       }
     }
    

    类的继承:

     class Animal {
       constructor(name) {
         this.name = name;
       }
    
       speak() {
         console.log(this.name + ' makes a noise.');
       }
     }
    
     class Dog extends Animal {
       constructor(name) {
         super(name); // call the super class constructor and pass in the name parameter
       }
    
       speak() {
         console.log(this.name + ' barks.');
       }
     }
    
     let d = new Dog('Mitzie');
     d.speak(); // Mitzie barks.
    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163391.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月23日 下午7:00
下一篇 2022年7月23日 下午7:16


相关推荐

  • DOS窗口命令大全用法及其详解

    DOS窗口命令大全用法及其详解Dos 命令大全入门 dos 命令教程一 什么是 DOS 命令 DOS 是英文 DiskOperatin 的缩写 意思是 磁盘操作系统 顾名思义 DOS 主要是一种面向磁盘的系统软件 说得简单些 DOS 就是人与机器的一座桥梁 是罩在机器硬件外面的一层 外壳 有了 DOS 我们就不必去深入了解机器的硬件结构 也不必去死记硬背那些枯燥的机器命令 我们只需通过一些接近于自然语言的 DOS 命令 就可以

    2026年3月18日
    2
  • aop 概念详解「建议收藏」

    aop 概念详解「建议收藏」本文主要内容什么是Aop?SpringAOP中重要的一些概念详解SpringAOP硬编码实现什么是AOP?先看一下传统程序的流程,比如银行系统会有一个取款流程我们可以把方框里的流程合

    2022年6月30日
    21
  • 详解mysql 主从复制原理

    详解mysql 主从复制原理

    2022年2月19日
    51
  • mysql主从灾备

    mysql主从灾备个人分类 数据库相关双机热备的概念简单说一下 就是要保持两个数据库的状态自动同步 对任何一个数据库的操作都自动应用到另外一个数据库 始终保持两个数据库数据一致 这样做的好处多 1 可以做灾备 其中一个坏了可以切换到另一个 2 可以做负载均衡 可以将请求分摊到其中任何一台上 提高网站吞吐量 对于异地热备 尤其适合灾备 废话不多说了 我们直接进入主题 我们会主要介绍两部分内容

    2026年3月20日
    3
  • oracle 导出时报错EXP-00011:table不存在「建议收藏」

    oracle 导出时报错EXP-00011:table不存在

    2022年3月6日
    73
  • opencv3编程入门_java基础与入门教程

    opencv3编程入门_java基础与入门教程——韦访 201810111、概述想学习图像处理,不管是机器学习也好,深度学习也好,不会点OpenCV好像有点说不过去吧?所以,现在开始OpenCV的学习。2、读写图片先从图片的读写开始,opencv读取图片的函数是imread,默认情况下,imread函数返回BGR格式的图像,可以用imwrite函数将数据写到本地。下面的代码会将JPG图片转成PNG。import…

    2022年10月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号