javaScript属性和方法同在构造函数中(包含继承)

JavaScript继承的几种方法 文章目录继承构造函数的属性继承:借用构造函数 继承 构造函数的属性继承:借用构造函数 阅读详情
将所有属性和方法使用this声明,并放在构造函数中,不使用prototype.

例子:

function Animal(name) {
	this.name = name;
	this.run = function() {
		alert("running "+this.name)
	};
}

var animal = new Animal('Foxie');
animal.run();

此类型的继承:
    1、使用apply或call调用父类构造函数获得父类的属性和方法
    2、在子类中添加新的属性和方法
栗子:

function Rabbit(name) {
	Animal.apply(this, arguments); // inherit
	
	this.bounce = function() {
		alert("bouncing "+this.name);
	}
}

rabbit = new Rabbit("Rab");
rabbit.bounce(); // own method
rabbit.run();    // inherited method

此种继承没有使用prototype意味着子类和父类的方法均独立在自己的对象中,没有共用的属性或方法。也就是没有达到方法的复用,子类和父类可能有着功能完全相同的方法。但是在这种模式中也有自己的有点,它支持private属性。

使用var在构造函数里边声明定义的属性和方法就是private类型,他的访问速度是非常快的。在构造函数的外部无法访问。
protected类型的属性同样使用命名规范'_'约束,并不是强制性的。

子类中的重写只需使用this.methidName即可。重写之前可将父类方法寄存,以便后续调用。

因为没有使用prototype所以rabbit instanceof Animal 在这里是不奏效的。
【JS继承】JS继承之构造函数继承 一、构造函数js中定义一个function,当使用new关键字调用这个function的时候,这个function成为一个构造函数。如下所示: 二、new关键字当使用new关键字调用构造函数生成一个对象实例时,js做出的关键处理如下: 1.创建一个新的对象,将构造函数内this指针指向新建对象。 2.将新建对象的__proto__属性设置成构造函数的prototype属性,确保新建对象是构造函数实例。 3.运行一遍构造函数,如果构造函数本身需要返回一个object或者array对象,则舍去新创建对象 阅读详情

相关推荐

SAP成本控制范围配置全流程:从货币参数到标准层次(附2024最新SPRO路径)

本文详细拆解了SAP成本控制范围(Controlling Area)的完整配置流程,涵盖从货币与估价参数文件定义、参数文件分配到控制范围,再到成本中心标准层次创建等核心步骤。文章提供了2024年最新的SPRO导航路径和实战配置要点,帮助顾问构建稳健、可扩展的管理会计基础架构,并附有常见问题排查指南。

java5的博客 940

JavaScript 面向对象【定义一个类以及实现继承】

JavaScript 本身并没有类和接口的概念了,面向对象都是基于原型实现的。 为了简单,我们只分析面向对象的两个问题: 如何定义一个类? 如何实现类的继承 【一】定义一个类 我们使用构造函数 + 原型的方式来定义一个类。 使用构造函数创建自定义类型,然后使用 new 操作符来创建类的实例,但是构造函数上的方法和属性在每个示例上都存在,不能共享,于是我们引入原型来实现方法和属性的共享。 最后,...

路虽远,行则必至! 825

国密SKF库数字签名全解析:SM2签名与验证的详细实现

本文详细解析了基于国密SKF库实现SM2数字签名与验证的全过程。内容涵盖SKF库环境搭建、设备初始化、PIN码验证、SM2签名生成以及纯软件与SKF库两种验证方式的详细实现,为开发者提供了一份实用的国密算法开发指南。

weixin_29303701的博客 324

js在类中的构造函数中写方法与在构造函数外写方法有什么不同?

js在类中的构造函数中写方法与在构造函数外写方法有什么不同? 在构造函数中初始化的方法属于类的属性,属性值为函数,其是可遍历的; 而在构造函数之外初始化的方法属于类的方法,其是不可遍历的; 但二者在功能上并没有什么异同,都可以正常调用。 举例: class Person { constructor(name) { this.name = name; this.say = () => { console.log('hello'); } } walk() { console.l

总柴的博客 1082

STK之Commu模块之三仿真卫星通信链路参数计算

考虑上述衰减的影响,可以得到卫星接收机输入端的载波功 [C] = [PT] +[GT] +[GR] -[L] -[L1] -[L2] (

juanhuokang2681的博客 8268

资产会计 Transaction Type 与业务交易的 Post to Affiliated Company 不一致导致的 AAPO176:成因剖析与修复指引

本文解析了SAP资产会计中常见的"AAPO176"错误提示,指出当交易类型(TType)与业务交易(Business Transaction)的"关联公司过账"(Post to Affiliated Company)标志不一致时,系统会拒绝过账。作者详细说明了该标志的作用机制,并提供了四种解决方案:修正交易类型使用、匹配正确的业务交易、调整系统配置或建立映射关系。文章还通过实际案例展示了配置错误对集团合并报表的影响,并附带了用于检查配置一致性的ABAP脚本。该错误通常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 401

Javascript定义类(class)的三种方法

Javascript定义类(class)的三种方法 将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言。如果你忘了填写用户名,它就跳出一个警告。 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途。程序员用它完成越来越庞大的项目。 Javascript代码的复杂度也直线上升。单个网页包含10000行Javascript代码,早就司空见惯。

zw946的专栏 1156

开关电源中的高频振荡噪声及其抑制方法

在开关电源的工作过程中,随着开关管的开关动作,电流和电压波形会出现剧烈的波动,尤其是在开关管切换的瞬间,往往会导致较强的过冲现象。开关电源中的高频振荡噪声是导致电磁兼容问题的主要源头之一,尤其是MOS管的通断和整流二极管的反向恢复过程中,会产生较强的高频振荡噪声。通过合理调节R和C的值,可以大大缓解高频振荡带来的EMC问题,从而有效提升电源的电磁兼容性。整流二极管反向恢复时的振荡会导致高频噪声产生,这些高频噪声源可被传导到电源的输出端,甚至可能通过电源的共地路径扩散到其他电路,影响系统的稳定性和可靠性。

硬核科技 1531

js 继承父构造函数的属性和方法

ES6之前没有extends,可以通过构造函数 + 原型对象实现继承,叫组合继承 call() 调用这个函数,并修改函数运行时this指向 fun.call(thisArg,aeg1,aeg2....) thisArg 调用函数的this的指向对象 aeg1,aeg2 传递参数 调用函数 function fn(x,y){ console.log(this); console.log(x + y); } var star = { name : "刘德华" } fn.call(.

weixin_37457661的博客 402

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

在 PFCG 中完成 SAP Fiori 对象分配:把 Business Catalog、Space、Page 与授权一次讲透

摘要:SAP Fiori权限配置的关键在于理解Business Catalog与Space的分层授权逻辑。传统SAP GUI中直接分配事务码的方式不适用于Fiori环境,必须通过PFCG为角色分配Catalog(提供应用访问权限)和Space(控制首页展示结构)。Catalog会自动解析所需OData服务授权,而Space则决定用户在Launchpad中看到的导航布局。常见错误包括直接分配Page而非其所属Space,或仅配置Space而忽略Catalog。最佳实践是优先使用Catalog驱动授权提议,再在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 327

JavaScript定义类,定义属性,定义方法的几种方式详解与分析

感觉这篇文章写的很好,就转载过来分享给和我一样的初学者。 提起面向对象我们就能想到类,对象,封装,继承,多态。在《javaScript高级程序设计》(人民邮电出版社,曹力、张欣译。英文名字 是:Professional JavaScript for Web Developers)这本书中描述的还算比较详细。我们看看JavaScript中定义类的各种方法。 1.工厂方式     javaScr

一个有趣、有料、有内涵的地方! 1180

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5850

JS继承方法和实现原理

1.js中继承实现的方法 实现继承首先需要一个父类,在js中实际上是没有类的概念,在es6中class虽然很像类,但实际上只是es5上语法糖而已 js中实现继承的方法共有七种,分别是: 1)原型链继承 2)借用构造函数继承 3)实例继承(原型式继承) 4)拷贝继承 5)组合式继承 6)寄生组合式继承 7)es6继承 ★原型链继承: 把父类的实例作为子类的原型(利用原型让一个引用类型继承另一个引用类型的属性和方法) 优点:简单易于实现,父类新增的实例与属性子类都能访问到 缺点: ♢ 可以在子类中增加实例属性,

lijiangzhao的博客 2378

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

javascript的继承——构造函数继承

构造函数继承方式: Father.call(this, args); 构造函数继承的几个特点: 父类构造函数中的属性和方法都可以被子类继承; 父类原型上的属性和方法无法被继承; 父类实例上的属性和方法无法被继承; 父类构造函数中的属性和方法在所有子类实例中是不共享的; 创建子类实例时可以向父类构造函数传参; 允许多重继承(同时继承多个不同的父类)。 var Father = function ...

讨厌走开啦 1156

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript Class 深入讲解:构造函数、继承、静态属性

本文介绍了JavaScript中类的使用,主要内容包括: JavaScript基于原型继承,类是其语法糖,所有类语法都可转换为原型继承类的三个关键特征: 构造函数;实例方法和实例字段;静态方法和静态字段

m0_74929506的博客 1123

js中构造函数的继承

js 构造函数的继承例子学习

进一步,有一步的欢喜。 2711

【JavaScript】js中的原型继承

js中的原型继承

南栀的博客 3705

子类继承父类的所有属性和方法_js中的继承问题

面向对象编程很重要的一个方面,就是对象的继承。A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法。这对于代码的复用是非常有用的。大部分面向对象的编程语言,都是通过“类”(class)实现对象的继承。传统上,JavaScript 语言的继承不通过 class(ES6 引入了class 语法),而是通过“原型对象”(prototype)实现。那么在JS中常见的继承方式有几种呢?方式一、...

weixin_39581995的博客 1493

【继承系列】JS中的构造函数继承

1.构造函数继承 在子类构造函数内部使用call或apply来调用父类构造函数 我们先来复习一下call和apply方法。 通过call()、apply()或者bind()方法直接指定this的绑定对象, 如foo.call(obj)使用.call()或者.apply()的函数是会直接执行的,而bind()是创建一个新的函数,需要手动调用才会执行 .call()和.apply()用法基本类似,不过call接收若干个参数,而apply接收的是一个数组 举个????: const obj = { a:'

AndyPoplar 887

JS中的继承方法——组合继承介绍与实践

组合继承是原性链继承和构造函数继承的合体,它汲取了二者各自的有点,同时又互相补充了各自的弱点,是一种应用十分广泛的javascript继承模式。下面分别从原性链继承、构造函数继承分别开始介绍,最后介绍二者的结合——组合继承。         一、原型链:利用原型让一个引用类型继承另一个引用类型的属性和方法         每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实

fareise的博客 6780

子类继承父类的所有属性和方法_JavaScript 常见的六种继承方式

(给前端大全加星标,提升前端技能)作者:前端工匠 公号 / 浪里行舟 (本文来自作者投稿)前言面向对象编程很重要的一个方面,就是对象的继承。A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法。这对于代码的复用是非常有用的。大部分面向对象的编程语言,都是通过“类”(class)实现对象的继承。传统上,JavaScript 语言的继承不通过 class(ES6 引入了cla...

weixin_39941859的博客 6200

JS中对象的四种继承方式:class继承、原型链继承、构造函数继承、组合继承(构造函数和原型链继承的结合)

前言 才发现之前没有对JavaScript中的继承做过总结,不过看得到是不少,接下来就对这几种继承方式做一下总结。 class继承 class继承是ES6引入的标准的继承方式。具体的实现方式如下: // class继承 class Animal { constructor(name) { this.name = name } getName() { return this.na...

xawjz的博客 1403

JavaScript 面向对象-子类继承父类的属性和方法(原型的应用)

JavaScript 面向对象-子类继承父类的属性和方法(原型的应用) 步骤: 创建构造函数Person,添加属性民族(nation)和肤色(skinColor),添加两个方法,分别返回民族和肤色 创建构造函数Woman,添加属性性别(sex),Woman继承Person 为构造函数Woman添加方法,返回性别 创建Woman的实例对象woman1 在页面中输出对象woman三个方法的值 代码部分: <body> <div></div> <sc...

qq_31910227的博客 1948

子构造函数继承父构造函数的属性和方法

ES6之前没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承 call() function fn(x,y){ console.log('我想干嘛'); console.log(this); console.log(x+y); } var o={ name:'aaa' }; fn();//这里输出的this指向window //1...

weixin_46100406的博客 453

JS之继承和实现继承的方法

实现继承的方法,原型继承 实例化父类,让它作为子类的原型,从而实现子类可以访问到父类构造函数以及原型上的属性或者方法。 优点是简单易于实现,父类新增的实例与属性子类都能访问到; 缺点是在创建子类型的实例时,没有办法在不影响所有对象实例的情况下给父类传递参数。 构造函数继承 原理是调用父类的构造函数然后改变他的this指向,也就是复制父类的实例属性给子类 这样做的优点是解决了子类构造函数向父类传递参数的问题,可以实现多继承(call或apply多个父类),解决了原型中包含实例引用类型值被所有实例共享的问题;

weixin_53350466的博客 697
上一篇: 再看javaScript伪经典继承
下一篇: 工厂模式创建对象
五月西瓜
博客等级 码龄12年 4粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值