• 原型和原型对象


    对象的原型通过对象.__proto__进行获取,属性值还是对象,__proto__是对象的隐藏属性
        对象访问一个属性的时候,先去自己本身去查找有没有这个属性,如果有直接使用,如果没有,去对象的原型(__proto__)上面去找,也就是从构造函数原型类型(prototype)上去找,如果没有,去对象的原型的原型去找,一直找到null为止
        function Animal(name,age){
            this.name=name
            this.age=age
            this.speak=function(){
                console.log("科学的尽头是神学")
            }
        }
        var dog=new Animal("哈士奇",10)
        console.log(dog)
        console.log(dog.name)
        dog.speak()
        console.log(dog.__proto__)//对象的原型
        console.log(Animal.prototype)//构造函数的原型类型
        
        //对象的原型指向的是构造函数的原型类型
         console.log(dog.__proto__===Animal.prototype)
        //有的时候 如果多个对象都具有相同的功能,把方法定义在构造函数原型类型上面,要比直接定义构造函数里面要节省代码量
        var cat=new Animal("加菲猫",10)
        console.log(cat)
        console.log(cat.__proto__===Aniaml.prototype)
        //在构造函数原型上面添加一个公共的方法 say
        Animal.prototype.say=function(){
            console.log("西医的存在就是为了证明中医的伟大")
        }
        cat.say()//cat之所以say方法 主要是因为访问属性和方法是从对象和对象原型上去找方法,但是对象的原型又是指向的构造函数原型类型。
        dog.say()
        //构造函数原型上面添加一个公共的方法 可以对系统对象扩展方法
        String.prototype.f1=function(){
            console.log("我是给String进行扩展的方法")
        }
        var s="11"
        s.f1()
        "hello".f1()
        
        

  • 相关阅读:
    WPF必须掌握的技能之自定义控件——实战:自制上传文件显示进度按钮
    图解 | 聊聊 MyBatis 缓存
    人工智能课题、模型源码
    Chrome修改主题颜色
    win10 docker .vhdx 文件过大
    strcpy和strcat和strlen操作(char数组)
    2022软件创新实验室暑假集训21级大作业说明
    【DL with Pytorch】第 2 章 : 神经网络的构建块
    Socket网络编程(五)——TCP数据发送与接收并行
    Spring Cloud 之 Zuul
  • 原文地址:https://blog.csdn.net/weixin_55711841/article/details/126167166