zoukankan      html  css  js  c++  java
  • JS构造函数、原型对象、隐含参数this

    This
    解析器再调用函数每次都会向函数内部传递一个隐含的参数this,this指向的是一个对象(函数执行的上下文对象)
    1、以函数形式调用时,this永远是window。
    2、以方法形式调用时,this就是调用方法的那个对象
    3、当以构造函数的形式调用时,this就是新创建的那个对象

    使用工厂的方法创建对象
    通过该方法可以大批量的创建对象,这样创建的对象使用的构造函数都是Object,无法区分多种不同类型的对象。

    function create(name,age,geder){
     var obj = new Object();
     obj.name = name;
     obj.age = age;
     obj.gender =gender;
     obj.sayName = function(){
     alert(this.name);
     };
     return obj;
    }
     var obj1 = create(“xx”,xx,“x”);
     var obj2 = create(“xx”,xx,“x”);
     var obj3 = create(“xx”,xx,“x”);
     console.log(obj1);
     console.log(obj2);
     console.log(obj3);
    

    构造函数
    一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯首字母大写
    构造函数和普通函数的区别就是调用方式不同,普通函数直接调用,构造函数需要用new关键字
    执行流程:
    1、 立刻创建一个新的对象
    2、将新建对象设置为this,在构造函数中可以使用this来引用新建的对象
    3、逐行执行函数中代码
    4、将新建的对象作为返回值返回

    function person(name,age,geder){
     this.name = name;
     this.age = age;
     this.gender =gender;
     this.sayName = function(){
     alert(this.name);
     };
    
    }
     var per = new person(“xx”,xx,“x”);
     var per2 = new person(“xx”,xx,“x”);
     var per2 = new person(“xx”,xx,“x”);
     console.log(per);
     console.log(per2);
     console.log(per3);
    

    使用instanceof可以检查一个对象是否是一个类的实例
    语法:对象 instanceof 构造函数
    如果是则返回true,否则返回false
    为节省空间,将sayname方法在全局作用域中定以,
     但会污染全局作用域的命名空间,不安全
    原型(prototype)
    每创建一个函数,解析器都会向函数中添加一个属性,这个属性对应一个对象就是原型对象
     作为普通函数调用prototype没有任何作用
     以构造函数调用时,创建的对象都会有一个隐含的属性,
        指向该构造函数的原型对象,可以通过_ _proto_ _来访问该属性
    原型对象相当于一个公共的区域,所有对象都可以访问到原型的属性可以将对象中共有的内容,统一设置到原型对象中

    function MyClass(){
    }
    //向MyClass的原型中添加属性a
    MyClass.prototype.a = 123;
    //向MyClass的原型中添加一个方法
    MyClass.prototype.sayHello = function(){
     alert("Hello");
    };
    

    检查对象自身中是否含有某个属性用对象的hasOwnProperty()

    有些压力总是得自己扛过去,说出来就成了充满负能量的抱怨。寻求安慰无济于事,还徒增了别人的烦恼。而但你独自走过艰难险阻,一定会感谢当初一声不吭要牙坚持这的自己。没人在乎你怎样在深夜痛苦,也没人在乎你辗转反侧要熬过几个秋。外人只看结果,自己独撑过程。等我们都明白了这个道理,便不会再在人前矫情,四处诉说以求安慰。
  • 相关阅读:
    内存
    jmeter设置全局变量
    tomcat(1)
    JVM(一)
    内存溢出
    消息中间件
    上下文切换(二)
    平均负载(二)
    requests模块
    Pycharm如何配置Git
  • 原文地址:https://www.cnblogs.com/Yokemadman/p/10362869.html
Copyright © 2011-2022 走看看