软件设计:JavaScript面向对象(随笔)

    作者:des雷锋更新于: 2020-04-15 15:05:33

      Javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

      构造函数创建对象

      1构造函数是用new创建对象时调用的函数,与普通唯一的区别是构造函数名应该首字母大写。

      functionPerson(){

      this.age=50;

      }

      leta=newPerson();

      console.log(a.age);//50

      2构造函数可以接受参数

      functionPerson(age){

      this.age=age;

      }

      leta=newPerson(30);

      console.log(a.age);//30

      如果没有参数,可以省略括号

      functionPerson(){

      this.age=30;

      }

      //等价于varperson1=newPerson()

      varperson1=newPerson;

      console.log(person1.age);//30

      如果忘记使用new操作符,则this将代表全局对象window。通常这种情况下会容易发生很多错误。

      一定要小心。

      functionPerson(){

      this.age=30;

      }

      varperson1=Person();

      //UncaughtTypeError:Cannotreadproperty'age'ofundefined

      console.log(person1.age);

      instanceof(实例)

      用来判断对象的类型以及当前对象是否是通过指定构造函数构建而成

      functionPerson(){

      //

      }

      leta=newPerson();

      console.log(ainstanceofPerson);//true

      constructor

      每个对象在创建时都自动拥有一个构造函数属性constructor,其中包含了一个指向其构造函数的引用。而这个constructor属性实际上继承自原型对象,而constructor也是原型对象唯一的自有属性

      functionPerson(){

      //

      }

      varperson1=newPerson;

      console.log(person1.constructor===Person);//true

      console.log(person1.__proto__.constructor===Person);//true

      通过打印person1,你会发现,constructor是一个继承的属性。

      虽然对象实例及其构造函数之间存在这样的关系,但是还是建议使用instanceof来检查对象类型。这是因为构造函数属性可以被覆盖,并不一定完全准确

      functionPerson(){

      //

      }

      varperson1=newPerson;

      Person.prototype.constructor=123;

      console.log(person1.constructor);//123

      console.log(person1.__proto__.constructor);//123

      为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

课课家教育

未登录