JavaScript基于对象(面向对象)<一>类和对象
javascript中一切皆对象,比如:Array,Date.....这些都是对象。javascript中没有class的定义,function既是定义函数,也可以是定义类。function Obj(){}可以是定义了一个Obj函数,也可以是定义了一个Obj类。 既function obj(){}为最简单的创建类。
一下案例演示的截图来自Nodejs的命令行,不懂Nodejs不影响阅读
JS中构建类的最基本方法:
/*最基本类的定义*/
function person(){
this.age; //定义类属性
};
var p_1 = new person(); //根据已定义类创建对象
p_1.name = "Tom"; //对象动态赋值属性
p_1.age = 18; //属性赋值
/*输出对象属性值*/
console.log("His name is " + p_1.name + " " + p_1.age + " years old this year.");
*****************************************************************************************************************
工厂创建对象:
抽取一类对象共有的属性,方法封装成一个工厂方法(函数)。
工厂就好比一个模具,通过工厂这个模具创建多个对象。
/*创建工厂*/
function createPet(name,color){
var pet = new Object(); //创建对象
pet._name = name; //创建对象属性
pet._color = color;
/*创建对象方法*/
pet.sayHi = function(){
console.log("一只" + pet._color + pet._name + "向你问好!");
}
return pet; //返回一个对象
}
var cat = createPet("猫咪","白色"); //用工厂创建对象
cat.sayHi(); //调用对象方法
var dog = createPet("小狗","黑色");
dog.hobby = "吃骨头"; //创建该对象特有属性
dog.sayHi();
console.log(dog.hobby);
工厂创建对象缺点:
每次创建一个新对象,都需要调用一次工厂方法,有些浪费内存。
*****************************************************************************************************************
原型与原型链:
prototype原型对象(原型类)。原型对象(原型类)prototype可以理解为一个抽象类,是由prototype原型对象(原型类)创建的所有对象的抽象类。
function person(){ this.name = "stu_name"; } //创建person类
person.prototype.profession = "student"; //创建person类原型属性,并赋值
var tea = new person(); //创建对象
tea.name = "teach"; //重新赋值name属性
tea.profession = "teacher"; //重新赋值profession属性
console.log(tea.name + " " + tea.profession); //输出内容
- prototype定义的属性属于原型对象(原型类)。
- prototype属性只能通过原型对象(原型类)修改其值,不可通过原型对象(原型类)创建出来的对象修改prototype属性。
- prototype属性一旦修改则会影响所有通过该原型对象(原型类)创建出来的对象。
JavaScript基于对象(面向对象)<一>类和对象的更多相关文章
- JavaScript、ES6中的类和对象
面向对象可以用于描述现实世界的事物,但是事物分为具体的(特指的)事物和抽象的(泛指的)事物. 面向对象思维的特点: 1.抽取(抽象)对象共有的属性和行为组织(封装)成一个类(模板) 2. ...
- python面向对象(类与对象)
面向对象思想 关注公众号"轻松学编程"了解更多. 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在生活中: 它是一种看待问 ...
- oop面向对象【类与对象、封装、构造方法】
今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...
- C#面向对象基础 —— 类与对象
文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...
- C#面向对象基础--类与对象
1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- day27 Pyhton 面向对象02 类和对象的命名空间
一.内容回顾 类:具有相同属性和方法的一类事务 # 描述一类事务轮廓的一个机制 #商品/用户/店铺 对象/实例: 对象(实例)就是类的实例化 # 对象就是类的一个具体的表现 #某一件特定的商品/某个人 ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- 浅谈JavaScript和DOM中的类数组对象
JavaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined.Null.Boolean.Number.String)和复杂数据类型(1种:Object).Obj ...
随机推荐
- phpize 动态添加 PHP 扩展的错误及解决方案
使用phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法. 问题一: 执行 phpize 报错如下: $ ...
- JavaEE基础(十一)/Eclipse介绍
1.Java开发工具(常见开发工具介绍) A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) D:Ec ...
- yii2 批量插入or更新
$sql1 = 'insert into business_ip (gid, name, area, belongName, belongArea, destIPv4, created, update ...
- sscanf 函数 分类: POJ 2015-08-04 09:19 4人阅读 评论(0) 收藏
sscanf 其实很强大 分类: 纯C技术 技术笔记 2010-03-05 16:00 12133人阅读 评论(4) 收藏 举报 正则表达式stringbuffercurlgoogle 最近在做日志分 ...
- The Blacksmith学习的相关资源
1.Unity官网的Blacksmith主页 https://unity3d.com/pages/the-blacksmith 2.WRINKLE MAPS IN THE BLACKSMITH 褶皱贴 ...
- Unity物理投射相关问题整理
1.投射目标是否需要附加刚体,是否可忽略触发器? 默认既支持触发器,也支持刚体.投射的最后一个参数queryTriggerInteraction可以设置,是否包含触发器事件. 2.非射线投射,是否有接 ...
- JavaScript的构造器与对象(二)
constructor 的用法:对象的构造函数 每一个函数的Prototype属性指向的对象都包含唯一一个不可枚举属性constructor,该属性的值是这么一个对象:它指向了它所在的构造函数. 语 ...
- for循环以及复杂if else 例题
for循环语句 例一. 请输入一个整数,求1加到这个整数的和 例二 请从1到100 以内和7 有关的数字 例三,请设计一个游戏,前20关每关的分数是本身,21到30 是10分每关.31到40是20分每 ...
- Swift 动画学习笔记
视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...
- windows下的mysql客户端mysqlworkbench链接虚拟机上CentOS的mysql服务器
本人在虚拟机上CentOS的Linux环境下安装了mysql服务器,在本地Windows下安装了mysql的客户端mysqlworkbench ,所以就想让windows下的mysql客户端mysql ...