首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Javascript:在构造器中还是在构造器之外编写类的属性有什么不同?

在构造器中编写类的属性和在构造器之外编写类的属性有以下不同之处:

  1. 作用域:在构造器中定义的属性是局部变量,只能在构造器内部访问。而在构造器之外定义的属性是全局变量,可以在整个类的范围内访问。
  2. 生命周期:在构造器中定义的属性是每次创建对象时都会重新初始化的,每个对象都有自己的一份属性副本。而在构造器之外定义的属性是类的静态属性,所有对象共享同一份属性副本。
  3. 访问权限:在构造器中定义的属性可以使用访问修饰符(如private、protected、public)来限制属性的访问权限。而在构造器之外定义的属性默认是public访问权限,所有对象都可以直接访问。
  4. 初始化时机:在构造器中定义的属性是在对象创建时进行初始化的,可以根据需要在构造器中对属性进行赋值。而在构造器之外定义的属性可以在类的任何地方进行初始化,不受对象创建时机的限制。

总结起来,构造器中定义的属性适用于需要每个对象都有自己的属性副本的情况,而构造器之外定义的属性适用于所有对象共享同一份属性副本的情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • javascript基础知识

    对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)。在其他经典的面向对象的语言中我们并没有办法直接去创建对象,我们都需要先用class这样的关键词创建一个对象模板(被称为类),然后调用类的构造函数去初始化一个对象出来,在类中描述的属性和方法会复制一份到对象中去,然而对于javascript来说,情况并非如此(不像“经典”的面向对象的语言,从构建函数创建的新实例的特征并非全盘复制,而是通过一个叫做原形链的参考链链接过去的,所以这并非真正的实例,严格的讲, JavaScript 在对象间使用和其它语言的共享机制不同,这个后面再讲),我们可以直接创建一个对象而不需要对象模板,创建方法请参考第二节。

    02

    浅谈JavaScript中的接口

    接口是面向对象JavaScript程序员的工具箱中最有用的工具之一。在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个概念的重要性可见一斑。但问题在于,在JavaScript的世界中,没有内置的创建或实现接口的方法,也没有可以判断一个对象是否实现了与另一个对象相同的一套方法,这使得对象之间很难互换使用,好在JavaScript拥有出色的灵活性,这使得模拟传统面向对象的接口,添加这些特性并非难事。接口提供了一种用以说明一个对象应该具有哪些方法的手段,尽管它可以表明这些方法的含义,但是却不包含具体实现。有了这个工具,就能按对象提供的特性对它们进行分组。例如,假如A和B以及接口I,即便A对象和B对象有极大的差异,只要他们都实现了I接口,那么在A.I(B)方法中就可以互换使用A和B,如B.I(A)。还可以使用接口开发不同的类的共同性。如果把原本要求以一个特定的类为参数的函数改为要求以一个特定的接口为参数的函数,那么所有实现了该接口的对象都可以作为参数传递给它,这样一来,彼此不相关的对象也可以被相同地对待。

    04
    领券