相关链接:

JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式

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

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

1、发展史

  面向机器

  面向过程:将程序的执行分解成若干个步骤

  面向对象:将程序的执行分解成若干个事物

2、面向对象两个基本概念

类:代表某类事物,是抽象的

对象:代表某个事物,是具体的

3、快速入门

表达一个人的完整信息

 <script>

     //面向过程
var name = 'zhangsan';
var age = 30;
var marry = true;
alert(name + age + marry); //面向对象
function Person{
}
var p1 = new Person();
p1.name = 'lisi';
p1.age = 20;
p1.marry = true;
alert(p1.name + p1.age + p1.marry); </script>

在面向过程的例子中,我们分别使用了三个变量来定义一个人的完整信息,但这三个变量它们之间没有必然的联系,如:我现在找到变量age,虽然可以取到数据,但并不清楚这是“谁”的年龄。

在面向对象的例子中, function Person{}是构造器。我们可以这样理解,每一个定义的function Person{}都是Person类的构造函数。

4.JS中常见的系统类

1)String类 字符串类

length :取得字符串长度

indexOf(string) :取得参数在字符串中出现的位置

substr(num1,[num2]) :截取字符串

toLowerCase()       :转换为小写

toUpperCase() :转换为大写

replace(str1,str2) :字符串替换

2)Date类   日期类

getYear()        :返回年份(有时会出错,建议用第二种)

getFullYear()  :返回年份

getMonth()     :返回月份 (0---11)

getDate()       :返回每月第几天

getDay()         :返回星期数 (0-6)

getHours()      :返回小时数

getMinutes()   :返回分钟数

getSeconds() :返回秒数

getMilliseconds() :返回毫秒数

3)Math类  数学类

ceil(数值)       :返回大于或等于该数的最小整数(比如说分页 Math.ceil(4.8)=5)

floor(数值)     :返回小于或等于该数的最大整数

min(数值1,数值2) :返回最小数

max(数值1,数值2) :返回最大数

pow(数值1,数值2) :返回数值1的数值2次方

random()              :返回随机数  0----------1

round(数值)   :四舍五入

sqrt(数值)      :开平方根

Math类下的方法都是静态方法

5.自定义类--类的定义

语法:

function 类名(){

}

在js中,没有类的定义语句,只有function,每一个function,我们可以认为它是同名类的构造函数

比如说:

function person(){

}

它是Person类的构造函数

这种函数也叫构造器

6.自定义类--声明对象

语法: var 对象=new 类名();

关键字new:实例化对象, 开辟相应内存空间

 function Person(){
alert('hello');
}
var p1 = new Person();

执行上面这个例子时,我们发现,在实例化时,直接执行了Person构造函数

7.自定义类--关于对象属性的使用

语法:

  对象.属性;

  对象['属性'];

 function Person(){
alert('hello');
}
var p1 = new Person();
p1.name='zhangsan';
p1.age=30;
alert(p1.name+p1.age);

在js中,对象属性是动态添加的,对象属性可以使用“.”或['']这两种形式表示出来

对象的属性可以是任何数据类型,如:字符串、数字、对象

8.三个关键字

constructor: 返回的是对象的构造器

typeof :返回数据类型

instanceof :判断对象是否是某个类的实例

 function Person(){
alert('hello');
}
var p1 = new Person();
p1.name='zhangsan';
p1.age=30;
alert(p1.name+p1.age); //返回p1对象的构造器
alert(p1.constructor);
//取得p1变量的数据类型
alert(typeof p1);
//判断p1是不是Person类的一个实例
alert(p1 instanceof Person);

9.对象在内存中的表现形式

 //例1
function Person(){
}
var p1 = new Person();
p1.name='zhangsan';
p1.age=30; var p2 = new Person();
alert(p2.name);

在例1中,创建p1对象时,会为p1开辟相应的堆空间,然后将name和age属性以及值添加到p1所指向的堆空间中,创建p2对象时,也会为p2对象开辟对应的空间,但p2所指向的堆空间是空的,所以P2对象没有name和age属性。

 //例2
function Person(){
}
var p1 = new Person();
p1.name = 'zhangsan';
p1.age = 30; var p2 = p1;
alert(p2.name);
p2.name = 'lisi';
alert(p2.name);
alert(p1.name);

在例2中,将p1栈中保存的堆的地址赋值给了p2,所以说,p2也指向了p1指向的堆内存的地址。两个对象指向了同一块堆内存,所以改变一个对象的属性,会影响到另一个对象。

 //例3
function Person(){
}
var p1 = new Person();
p1.name = 'zhangsan';
p1.age = 30; var p2 = p1;
alert(p2.name);
p2 = null;
alert(p1.name);
alert(p2.name);

在例3中,P2=null; 表示释放p2所占的栈空间,但p1的空间仍保留,p1仍然指向相应的堆空间,所以删除p2不会影响到p1对象。

JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式的更多相关文章

  1. python面向对象反射-框架原理-动态导入-元类-自定义类-单例模式-项目的生命周期-05

    反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反 ...

  2. PHP面向对象(PHP对象在内存中的分配)

    对 像在PHP 里面和整型.浮点型一样,也是一种数据类,都是存储不同类型数据用的, 在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻 辑上 说大体上是分为4 段,栈空间段. ...

  3. 剖析c++(三) 类对象在内存中的布局

    基本规则: 1.各data member的自然边界为其字节大小(char为1,short为2,int为4),并按照各自的自然边界对齐: 2.整个object的总自然边界为最大data memeber的 ...

  4. JS获取对象在内存中计算后的样式

    通过obj.style的方式只能取得"内联style"的值,对于<style></style>中的css属性值,则无能为力 . 我们可以用obj.curre ...

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

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

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

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

  7. js面向对象2

    1.发展史 面向机器 面向过程:将程序的执行分解成若干个步骤 面向对象:将程序的执行分解成若干个事物 2.面向对象两个基本概念 类:代表某类事物,是抽象的 对象:代表某个事物,是具体的 3.快速入门 ...

  8. [js高手之路]从零开始打造一个javascript开源框架gdom与插件开发免费视频教程连载中

    百度网盘下载地址:https://pan.baidu.com/s/1kULNXOF 优酷土豆观看地址:http://v.youku.com/v_show/id_XMzAwNTY2MTE0MA==.ht ...

  9. python笔记-9(subprocess模块、面向对象、socket入门)

    一.subprocess 模块 1.了解os.system()与os.popen的区别及不足 1.1 os.system()可以执行系统指令,将结果直接输出到屏幕,同时可以将指令是否执行成功的状态赋值 ...

随机推荐

  1. js/jQuery使用过程中常见问题

    目录 一.jQuery选择器选择选中的或者disabled的选择框时attr函数无效 二.jQuery each函数的break/continue 三.jQuery 获取元素的left会值/left数 ...

  2. Maven打包生成可运行bat/sh脚本文件

    利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台.   <plugin>      <groupId>org ...

  3. SOAPUI使用教程-REST Service Mocking

    REST服务模拟 REST服务模拟功能允许您创建一个REST服务模拟器-MockService . 好处 RESTMockServices可用于例如: Web服务的原型 ——几秒内从请求生成一个完整的 ...

  4. 读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题

    1.需求:有时候我们产品经理给我们的需求是会不断变化的,例如数量是1000现在变成500,我们不可以去改代码吧,这样很麻烦,所以就可以改配置文件properties(这个数据库链接一样),当然也有js ...

  5. underscorejs 源码走读笔记

    Underscore 简介 Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象.它弥补了部分jQuery ...

  6. 一张图系列——为什么在DllMain里面创建了线程并Wait会卡死

    这是一个老话题了,推荐一篇文章: http://blog.csdn.net/breaksoftware/article/details/8150476#0-tsina-1-83826-39723281 ...

  7. sql server 代理服务

    sql server 创建维护计划失败.错误代码:c001f011. 从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} ...

  8. 模拟--poj1835宇航员的故事

    这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...

  9. <十四>JDBC_c3p0数据库连接池

    配置文件:c3p0-config.xml <!-- Hibernate官方推荐使用的数据库连接池即c3p0;dbcp是Tomcat在数据源中使用 --><c3p0-config> ...

  10. android之Handler机制

    简单例子开头: 网络http请求网站源码数据并显示 注意点:访问网络需要加Internet权限: android.permission.INTERNET 简单的步骤: 使用UrlConnection请 ...