创建对象的方式:

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——面向对象、继承的更多相关文章

  1. js面向对象继承

    前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...

  2. js面向对象 继承

    1.类的声明 2.生成实例 3.如何实现继承 4.继承的几种方式 1.类的声明有哪些方式 <script type="text/javascript"> //类的声明 ...

  3. 关于JS面向对象继承问题

    1.原型继承(是JS中很常用的一种继承方式) 子类children想要继承父类father中的所有的属性和方法(私有+公有),只需要让children.prototype=new father;即可. ...

  4. js 面向对象 继承

    继承方式有四种: 1.call 2.apply 3.prototype 4.for in call 和 apply 的主要区别: call 传参数只能一个一个的传, apply 因为是用数组,所以可以 ...

  5. JS 面向对象 ~ 继承的7种方式

    前言: 继承 是 OO 语言中的一个最为人津津乐道的概念.许多 OO 语言都支持两种继承方式:接口继承 和 实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在 ...

  6. js 面向对象 继承机制

    根据w3cschool上的描述:共有3种继承方法(对象冒充,原型链,混合) 1.对象冒充:构造函数ClassA使用this关键字给所有属性和方法赋值,使ClassA构造函数成为ClassB的方法,调用 ...

  7. JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  8. JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  9. js面向对象之继承那点事儿根本就不是事

    继承 说道这个继承,了解object-oriented的朋友都知道,大多oo语言都有两种,一种是接口继承(只继承方法签名):一种是实现继承(继承实际的方法) 奈何js中没有签名,因而只有实现继承,而且 ...

  10. 捋一捋js面向对象的继承问题

    说到面向对象这个破玩意,曾经一度我都处于很懵逼的状态,那么面向对象究竟是什么呢?其实说白了,所谓面向对象,就是基于类这个概念,来实现封装.继承和多态的一种编程思想罢了.今天我们就来说一下这其中继承的问 ...

随机推荐

  1. cmd命令,输出为txt文本

    在命令行后面,加上'-t > d:output.txt'. 具体可参考如下图: //=====补充===== 所以,在调试nodejs的时候,如果用命令行调试,则可把输出信息都重定向到一个文件中 ...

  2. 如何在windows 2003(虚拟主机)上面部署MVC3

    相信有很多朋友和我一样遇到了这个问题,网上大牛说的都不是很清楚,关于这个问题我详细的跟进一下 这个问题呢大致分为两种情况 一.有服务器的控制权限,这个就简单很多, 1.安装mvc3支持组件2.如果可以 ...

  3. Python:模块详解及import本质

    转于:http://www.cnblogs.com/itfat/p/7481972.html 博主:东大网管 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), ...

  4. java笔试(2)

  5. 问题:Oracle long 类型l;结果:oracle里long类型的总结

    oracle里long类型的总结 1.LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB. 2.对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG ...

  6. 03_android日志猫的使用

    在java基础的时候如果想调试程序打一下日志,用的是System.out.println();. 控制台输出的其实不是咱们的日志,而是我把整个项目的部署到设备上.控制台输出的是这个东西.Uploadi ...

  7. 树莓派 Learning 002 装机后的必要操作 --- 06 共用键鼠 之 windows和树莓派

    树莓派 装机后的必要操作 - 使用Synergy软件 共用键鼠 之 windows和树莓派 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 ...

  8. error C2144: 语法错误:“int”的前面应有“;”

    error C2144: 语法错误:"int"的前面应有";" C++- error C2144 syntax error : 'int' should be ...

  9. 24、sam- 详解

    http://note.youdao.com/share/?id=312fa04209cb87f7674de9a9544f329a&type=note#/ https://davetang.o ...

  10. isPCR安装

    isPCR是用一对PCR引物搜索序列数据库.它使用索引策略来快速完成此操作.当搜索成功时,输出是fasta格式序列文件,其包含数据库中位于引物对之间的所有区域. Linux系统下安装 1. 使用二进制 ...