JS——面向对象、继承
创建对象的方式:
1)单体
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>面向对象——单体</title>
<script type="text/javascript"> var Tom = { name: 'tom',
age:18, showname:function(){
alert(this.name);
}, showage:function(){
alert(this.age);
}
}; alert(Tom.age);
Tom.showname(); </script>
</head>
<body>
</body>
</html>
2)工厂模式:通过一个函数来创建对象(开料、装配、出厂)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>工厂模式</title>
<script type="text/javascript"> function Person(name,age,job){ var o = new Object(); o.name = name;
o.age = age;
o.job = job; o.showname = function () {
alert(this.name);
}; o.showage = function () {
alert(this.age);
}; return o;
} var Tom = Person('tom',18,'engineer');
Tom.showname();
Tom.showage() </script>
</head>
<body>
</body>
</html>
3)构造函数(方法重复,缺点是占用内存)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>构造函数</title>
<script type="text/javascript"> function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.showname = function () {
alert(this.name);
}
} var Tom = new Person('tom',18,'engineer');
Tom.showname() </script>
</head>
<body>
</body>
</html>
4)原型模式(创建类)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>原型模式</title>
<script type="text/javascript"> function Person(name,age,job) { this.name = name;
this.job = job;
this.age = age; } //在prototype上绑定方法,该方法可以实现不同实例的共用
Person.prototype.showname = function () {
alert(this.name);
}; var Tom = new Person('tom',18,'engineer');
var Jack = new Person('jack',19,'worker');
Tom.showname();
Jack.showname(); </script>
</head>
<body> </body>
</html>
继承:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>继承</title>
<script type="text/javascript"> function Fclass(name,age) { this.name =name;
this.age = age;
} Fclass.prototype.showname = function () {
alert(this.name);
};
Fclass.prototype.showage = function () {
alert(this.age);
}; //属性继承:用call或者apply的方法继承
function Sclass(name,age,job) {
//改变当前函数执行的this对象:指向了子类实例化的对象
// call:aa.call('abc',2,3)
//apply:aa.apply('abc',[2,3])
Fclass.call(this,name,age); this.job = job; }
//方法继承:将父类的一个实例赋值给子类的原型属性
Sclass.prototype = new Fclass();
Sclass.prototype.showjob = function(){
alert(this.job);
}; var Tom = new Sclass('tom',18,'engineer'); Tom.showage();
Tom.showname();
Tom.showjob(); </script>
</head>
<body> </body>
</html>
JS——面向对象、继承的更多相关文章
- js面向对象继承
前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...
- js面向对象 继承
1.类的声明 2.生成实例 3.如何实现继承 4.继承的几种方式 1.类的声明有哪些方式 <script type="text/javascript"> //类的声明 ...
- 关于JS面向对象继承问题
1.原型继承(是JS中很常用的一种继承方式) 子类children想要继承父类father中的所有的属性和方法(私有+公有),只需要让children.prototype=new father;即可. ...
- js 面向对象 继承
继承方式有四种: 1.call 2.apply 3.prototype 4.for in call 和 apply 的主要区别: call 传参数只能一个一个的传, apply 因为是用数组,所以可以 ...
- JS 面向对象 ~ 继承的7种方式
前言: 继承 是 OO 语言中的一个最为人津津乐道的概念.许多 OO 语言都支持两种继承方式:接口继承 和 实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在 ...
- js 面向对象 继承机制
根据w3cschool上的描述:共有3种继承方法(对象冒充,原型链,混合) 1.对象冒充:构造函数ClassA使用this关键字给所有属性和方法赋值,使ClassA构造函数成为ClassB的方法,调用 ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- js面向对象之继承那点事儿根本就不是事
继承 说道这个继承,了解object-oriented的朋友都知道,大多oo语言都有两种,一种是接口继承(只继承方法签名):一种是实现继承(继承实际的方法) 奈何js中没有签名,因而只有实现继承,而且 ...
- 捋一捋js面向对象的继承问题
说到面向对象这个破玩意,曾经一度我都处于很懵逼的状态,那么面向对象究竟是什么呢?其实说白了,所谓面向对象,就是基于类这个概念,来实现封装.继承和多态的一种编程思想罢了.今天我们就来说一下这其中继承的问 ...
随机推荐
- Lisp的本质(The Nature of Lisp)
Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet 译者 Alec Jang 出处: http://w ...
- kudu安装以及kudu的坑
本文描述的是kudu在cloudera的安装. 首先cloudera 5.11.1版本尽管可以直接在add Services中看到kudu,但是其实并没有集成parcels,而且也不想kafka提示需 ...
- web攻击之七:常见CDN回源问题总结
1. URL链接出现非法链接 (如 */./Play/show/id/349281 ); 2. CDN接收未知Referer处理失效(目前搜索引擎的状态码为499); 3. CDN抓取服务器 Cach ...
- MongoDB之二基础入门(window/linux安装启动)
mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”. 一window安装与启动 一. 下载 上MongoDB官网 ,下载页面:https://w ...
- SharePoint Project Server List 列表CURD操作使用rest api接口
//#region 界面交互代码 var issuesUtils = issuesUtils || {}; (function () { /** * 点击问题提处理方案按钮事件 */ issuesUt ...
- Delegate Action<T in> Func<T in,out Tresult> Predicate<T>
action<T> 和 func<T> 都是delegate的简写形式,其中T为可以接受的参数类型 action<T> 指那些只有输入参数,没有返回值 Deleg ...
- AES算法的c++实现
该模板无填充操作. 1.AES.h #include<cstdio> #include<cstring> #include<algorithm> #include& ...
- DBVisualizer Pro for mac
公司使用的是DB2数据库,支持DB2的数据库客户端常用的有DBeaver和DBVisualizer.DBeaver是免费的,但本人电脑安装后,启动一直报错,问题一直没解决就放弃了.改用DBVisual ...
- Coding CTO 孙宇聪:《人,技术与流程》
我先做一下自我介绍,我是 07 年加入的 Google,在 Moutain View 总部任Google SRE,今年年初回国加入 Coding . 在 Google 我参与了两个 Project, ...
- Jenkins配置有用摘抄笔记
使用jenkins配置.net mvc5网站自动构建全过程记录 转自:http://www.cnblogs.com/baiyunchen/p/4724350.html 持续集成是个简单重复劳动,人来 ...