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); //输出内容
  1. prototype定义的属性属于原型对象(原型类)。
  2. prototype属性只能通过原型对象(原型类)修改其值,不可通过原型对象(原型类)创建出来的对象修改prototype属性。
  3. prototype属性一旦修改则会影响所有通过该原型对象(原型类)创建出来的对象。

JavaScript基于对象(面向对象)<一>类和对象的更多相关文章

  1. JavaScript、ES6中的类和对象

           面向对象可以用于描述现实世界的事物,但是事物分为具体的(特指的)事物和抽象的(泛指的)事物. 面向对象思维的特点: 1.抽取(抽象)对象共有的属性和行为组织(封装)成一个类(模板) 2. ...

  2. python面向对象(类与对象)

    面向对象思想 关注公众号"轻松学编程"了解更多. 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在生活中: 它是一种看待问 ...

  3. oop面向对象【类与对象、封装、构造方法】

    今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...

  4. C#面向对象基础 —— 类与对象

    文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...

  5. C#面向对象基础--类与对象

    1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...

  6. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  7. day27 Pyhton 面向对象02 类和对象的命名空间

    一.内容回顾 类:具有相同属性和方法的一类事务 # 描述一类事务轮廓的一个机制 #商品/用户/店铺 对象/实例: 对象(实例)就是类的实例化 # 对象就是类的一个具体的表现 #某一件特定的商品/某个人 ...

  8. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  9. 浅谈JavaScript和DOM中的类数组对象

    JavaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined.Null.Boolean.Number.String)和复杂数据类型(1种:Object).Obj ...

随机推荐

  1. [原创]南水之源A*(A-Star)算法

    开发导航之前我看了一些A*(A-Star)算法的例子和讲解.没有求得甚解!不过也从A*(A-Star)算法中得到启发,写了一套自己的A*(A-Star)算法.当然,这不是真正(我也不知道)的A*(A- ...

  2. coco2dx服务器简单例子

    实现的单个socket例子,了解socket原理. 先创建一个win32的项目(命令行的),作为服务端 // SocketServer.cpp : 定义控制台应用程序的入口点.// #include ...

  3. Linux vim的安装和配置:

    1:首先就碰到一个问题 程序 'vim' 已包含在下列软件包中: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-nox 请尝试:s ...

  4. git: fatal unable to auto-detect email address

    参考:http://stackoverflow.com/questions/25671785/git-fatal-unable-to-auto-detect-email-address 正确使用命令: ...

  5. 越狱后如何添加cydia源及cydia源大全

    http://jingyan.baidu.com/article/6c67b1d6cc53fe2787bb1e06.html 软件游戏能PJ,插件其实也一样,所以有些源里面就包含了大量的PJ插件~ a ...

  6. thinkphp 删除多条记录

    删除id为123456的记录 $ids=array(1,2,3,4,5,6);$maps["id"] = array("in",$ids);$this-> ...

  7. 2016CCPC东北地区大学生程序设计竞赛 1008 HDU5929

    链接http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:给你一种数据结构以及操作,和一种位运算,最后询问:从'栈'顶到低的运算顺序结果是多少 解法:根据 ...

  8. MySQL基础(四)——索引

    MySQL基础(四)--索引

  9. Spring MVC 详解(一)

    springmvc是spring的一个模块,提供web层解决方案(基于mvc设计架构),mvc是一个设计模式,在b/s系统的应用: spring 的架构 mvc设计模式 spring MVC的框架 第 ...

  10. 【leetcode❤python】226. Invert Binary Tree

    #-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init ...