大家好,今天来为大家解答深入解析:构造函数与原型中属性和方法的声明原因这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
this.name=名称}; //这是一个构造函数
varperson1newPerson("Jone") //构造函数new的实例
varperson2newPerson("li") //构造函数new的实例
这里的person1和person2都是实例,是通过new构造函数实例化的对象。
Person是一个类,也是一个构造函数
总的来说,它具有以下特点:
1、构造函数必须与类同名,一般没有返回值。
2. 每个类可以有多个构造函数。当开发者没有提供构造函数时,编译器在将源代码编译为字节码的过程中,会提供一个默认的不带参数的构造函数,但是这个构造函数不会执行任何代码。如果开发者提供了构造函数,编译器将不再默认创建构造函数。
3.构造函数可以有0个、1个或多个参数
4.构造函数总是与new操作一起调用,不能由程序编写者直接调用。它必须由系统调用。构造函数在实例化时会被自动调用,并且只会执行一次,而普通方法则是在程序执行时调用,可以被对象调用多次。
5.构造函数主要作用是完成对象的初始化
6、构造函数不能被继承,因此不能被重写,但可以重载,即使用不同数量的参数或参数类型定义多个构造函数。
7、子类可以通过super关键字显式调用父类的构造函数。当父类提供带参数的构造函数时,子类的构造函数必须显式调用父类的构造函数。如果父类提供了无参构造函数,则子类的构造函数不能显式调用父类的构造函数。这种情况下,编译器会默认调用父类提供的无参构造函数。当有父类时,实例化对象时,会先执行父类的构造函数,然后再执行子类的构造函数。
当父类和子类都没有定义构造函数时,编译器会为父类生成一个默认的无参构造函数,为子类生成一个默认的无参构造函数。另外,默认构造函数的修饰符只与当前类的修饰符相关(例如,如果一个类被定义为public,那么它的构造函数也是public)。
为什么说属性在构造函数中声明,方法在原型中声明?
因为在构造函数中声明后,通过new关键字实例化的实例是单独享有的,所以属性是在构造函数中声明的;并且由于方法是大家共享的,不经常改变,所以可以在prototype中声明方法。当然,方法也可以在构造函数中声明
在构造函数中声明是为了属性能单独享有
在构造函数的proptotype中声明是为了实例能共享
分别向实例对象和对象构造器中添加属性和方法
1.为创建的实例对象添加属性和方法 -----直接 " . "
属性:
myFather.nationality="英语";
方法:
myFather.name=function () { return this.firstName + " " + this.lastName;};
即直接实例name.property=value/function的方法
2.为构造函数添加属性和方法
如果需要在构造函数中添加新的属性,必须添加到构造函数中--------(直接写入构造函数中)
与向现有对象添加新方法不同,您无法向对象构造函数添加新方法。您必须在构造函数内向对象添加方法:
例如下面的代码: this.nationality="English";是添加到构造函数中的新属性,
this.name=function() {return this.firstName + " " + this.lastName;};是添加到构造函数中的新方法
函数Person(名字、姓氏、年龄、眼睛颜色) {
this.age=年龄;
this.eyeColor=眼睛颜色;
+this.nationality="英语";
+ this.name=function() {return this.firstName + " " + this.lastName;};
}
使用prototype属性--------通过添加(类名.proyotype.property=value)
JavaScript 原型属性允许向对象构造函数添加新属性:
functionPerson(第一个,最后一个,年龄,眼睛颜色) {
this.age=年龄;
this.eyeColor=眼睛颜色;}
Person.prototype.nationality="英语";
JavaScript 原型属性还允许向对象构造函数添加新方法:
函数Person(名字、姓氏、年龄、眼睛颜色) {
this.age=年龄;
this.eyeColor=眼睛颜色;}
【深入解析:构造函数与原型中属性和方法的声明原因】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
我正在学JavaScript,这篇文章内容挺相关的,感觉可以让我更好地理解这个概念。
有8位网友表示赞同!
终于有人解释清楚了构造函数到底是什么了!以前总觉得有点糊涂
有18位网友表示赞同!
属性和方法放在哪里确实很关键啊,学习到新知识!
有14位网友表示赞同!
这篇文章的讲解还挺简单易懂的,新手看应该也能明白。
有9位网友表示赞同!
我想知道除了这个说法以外还有其他关于构造函数解释的方法吗?
有13位网友表示赞同!
原来属性和方法是这样区分声明位置的吗?很有趣!
有11位网友表示赞同!
这篇内容很明确地表达了重点,容易理解和记忆。
有11位网友表示赞同!
我之前写的代码可能有点问题,可能是因为属性和方法的定义位置没搞清楚?
有14位网友表示赞同!
学习JavaScript真是一个不断探索的过程,今天又学到了新的知识点!
有12位网友表示赞同!
我觉得这篇讲解很有用,可以帮我解决一些编程上的疑惑。
有10位网友表示赞同!
我会尝试用这种方法来写我的代码看效果怎么样
有8位网友表示赞同!
这个说法听起来很合理,我现在更加明白构造函数的作用了!
有20位网友表示赞同!
看了这篇文章我感觉自己对JavaScript的理解更深入了一些
有16位网友表示赞同!
真希望所有知识点都能解释得这般清晰易懂!
有19位网友表示赞同!
以后我要注意属性和方法的声明位置,避免写出错误的代码
有8位网友表示赞同!
这种分类方式很有逻辑性!
有5位网友表示赞同!
我收藏了这篇文章,待会再仔细阅读一遍
有13位网友表示赞同!
对JavaScript初学者来说这篇文章非常有价值!
有15位网友表示赞同!