JavaScript学习笔记——对象知识点
javascript对象的遍历、内存分布和封装特性
一、javascript对象遍历
1.javascript属性访问
对象.属性
对象[属性] //字符串格式
- //javascript属性的访问方法
- var ren ={};
- ren.name="张三";
- ren.sex="男";
- ren.eat=function () {
- alert("吃饭");
- }
- alert(ren.name);
- alert(ren["name"]);
2.javascript属性遍历
for in
- //javascript属性遍历
- var ren ={};
- ren.name="张三";
- ren.sex="男";
- ren.eat=function () {
- alert("吃饭");
- }
- for (var i in ren) {
- alert(ren[i])
- }
通过arguments来遍历传入的参数
- function myArray () {
- var lengs= arguments.length;
- for (var i=0; i<lengs; i++) {
- this[i]=arguments[i];
- }
- }
- var arr=new myArray(1,2,3);
- alert(arr[0]);
二、内存分布
三、对象的特性之封装
把对象所有的组成部分组合起来,尽可能的隐藏对象的部分细节,使其受到保护。
只保留有限的接口和外部发生联系。
一、工厂函数
- //工厂函数
- function dianshi (color,size,brand) {
- var Tv={};
- Tv.color=color;
- Tv.size=size;
- Tv.brand=brand;
- Tv.look=function () {
- alert("看电视");
- }
- Tv.play=function () {
- alert("玩游戏");
- }
- Tv.dvd=function () {
- alert("DVD");
- }
- return Tv;
- }
- var ds=dianshi("red","30inch","sony");
- //alert(typeof ds)
- alert(ds.color)
- var ds1=dianshi("blue","40inch","changh");
- alert(ds1["size"])
二、构造函数
- //构造方法的形式
- function Tv(color,size,brand) {
- this.color=color;
- this.size=size;
- this.brand=brand;
- this.play=function () {
- alert("玩游戏");
- }
- this.look=function () {
- alert("看电视");
- }
- this.dvd=function () {
- alert("DVD");
- }
- }
- var sony=new Tv("red","20 inch","sony");
- alert(sony.color)
三、prototype方法
对原型属性的修改将影响到所有的实例
- //prototype方法
- function Tv(color,size,brand) {
- this.color=color;
- this.size=size;
- this.brand=brand;
- this.play=function () {
- alert("玩游戏");
- }
- }
- Tv.prototype.look=function () {
- alert("看电视");
- }
- Tv.prototype.dvd=function () {
- alert("DVD");
- }
- Tv.prototype.aaa={name:"张三"};
- var sony=new Tv("red","20 inch","sony");
- var changhong =new Tv("red","20 inch","CH");
- // delete sony.color
- // delete sony.play
- // delete sony.look
- // alert(sony.color)
- // alert(sony.play)
- // alert(sony.look)
- // sony.look();
- // changhong.look();
- alert(sony.aaa.name="李四");
- alert(changhong.aaa.name);
四、混合方法
- //混合方式
- function Tv(color,size,brand) {
- this.color=color;
- this.size=size;
- this.brand=brand;
- this.play=function () {
- alert("玩游戏");
- }
- Tv.prototype.aaa={name:"张三"};
- }
- Tv.prototype.look=function () {
- alert("看电视");
- }
- Tv.prototype.dvd=function () {
- alert("DVD");
- }
javascript对象的继承和Object对象
对象的一个类可以从现有的类中派生,并且拥有现有的类的方法或是属性,这和过程叫做继承。被继承的类叫做父类或是基类,继承的类叫做子类。
(一个对象拥有另一个对象的属性和方法)
优点:
提高代码的重用性
提高代码的可维护性
提高代码的逻辑性
一、Object对象
var obj=new Object()
属性:
1.constructor
对创建对象的函数的引用(指针)。
- //1.constructor
- //对创建对象的函数的引用(指针)
- var obj=new Object();
- alert(obj.constructor)
2.Prototype 原型
**********************************************
对该函数对象的对象原型的引用。是函数对象的默认属性
**********************************************
- //Prototype
- //对该函数对象的对象原型的引用。
- var obj=new fun1();
- function fun1 () {
- this.name="zhangsan";
- }
- alert(obj.prototype)
- alert(fun1.prototype)
A.对象的共享属性存放到代码段当中。
B.可以实现继承。
方法:
A.hasOwnProperty(property)
判断对象是否有某个特定的属性,返回true或者false
- alert(obj.hasOwnProperty("name"))
B.IsPrototypeOf(object)
判断该对象是否为另一个对象的原型。(用来检测对象的类型)
var arr=new Array();
alert(Array.prototype.isPrototypeOf(arr))
c.运算符
instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例
- alert(arr instanceof Array)
二、继承
1.原型继承
- function person () {
- this.name="张三";
- this.say=function () {
- alert(this.name)
- }
- }
- function student () {
- }
- student.prototype=new person()
- var zhangsan=new student ();
- zhangsan.say()
2.对象冒充的形式
A.call
obj1.fun.call(obj2,参数1......)
B.apply
obj1.fun.call(obj2,[参数1,参数2....])
让对象1的方法冒充成对象2的方法。
- //对象冒充
- /*
- function person () {
- this.name="张三";
- this.say=function () {
- alert(this.name)
- }
- }
- function student () {
- this.name="李四";
- }
- var ren=new person ();
- var zhangsan=new student ();
- ren.say.call(zhangsan)
- */
- function person (name) {
- this.name=name;
- this.say=function () {
- alert(this.name)
- }
- }
- function student () {
- window.person.apply(this,["zhangsan"])
- }
- var zhangsan=new student ();
- alert(zhangsan.name)
- zhangsan.say();
对象的继承顺序
一、对象的继承顺序
- //对象的继承顺序
- Object.prototype.say=function () {
- alert("我是顶层的方法");
- }
- function person () {
- this.say=function () {
- alert("我是父类的方法");
- }
- }
- person.prototype.say=function () {
- alert("我是父类原型的方法");
- }
- function study () {
- this.say=function () {
- alert("本身的方法");
- }
- }
- study.prototype=new person();
- study.prototype.say=function () {
- alert("本身原型的方法");
- }
- var zhangsan=new study ();
- alert(zhangsan.say)
JavaScript学习笔记——对象知识点的更多相关文章
- JavaScript学习笔记-对象
枚举对象的属性:通常用for(...in...)来循环遍历,由于 for in 总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能 for(var i in foo){ if(foo. ...
- JavaScript学习笔记——对象分类
对象的分类 一.对象的分类 1.内置对象 Global Math 2.本地对象 Array Number String Boolean Function RegExp 3.宿主对象 DOM BOM 二 ...
- JavaScript学习笔记——对象基础
javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研 ...
- JavaScript学习笔记及知识点整理_3
1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事 ...
- JavaScript学习笔记及知识点整理_2
1.一般而言,在Javascript中,this指向函数执行时的当前对象.举例如下: var someone = { name: "Bob", showName: function ...
- JavaScript学习笔记及知识点整理_1
一.js的基础部分 1.==和===的区别:==在判断是否相等的时候会进行类型转换,有时会得到非常奇怪的结果,因此一般情况下都是用===判断是否相等2.strict模式:在js中,如果一个变量没有用v ...
- JavaScript学习笔记——对象的创建
对象是JavaScript基本数据类型,在JavaScript中除了Undefined.Null.布尔型(ture.false).字符串和数字之外,其他的都属于对象. 在JavaScript中,一个对 ...
- JavaScript:学习笔记(9)——Promise对象
JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...
- JavaScript:学习笔记(8)——对象扩展运算符
JavaScript:学习笔记(8)——扩展运算符 对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩 ...
随机推荐
- extjs5 一个容器中有几个组件公用一个控制器和一个模型
Ext.define('TestViewModel', { extend: 'Ext.app.ViewModel', alias: 'viewmodel.test', // connects to v ...
- centos 20T硬盘(超过16T)分区
最近新买了一台服务器DELL R730 首先我们做了一个raid 1 和raid 5 在raid 1 上安装系统 安装完系统之后,现在要进行分区了,那个raid 5 做完之后,实际大小是19T 所以这 ...
- Servlet作业2-将表单提交的商品信息输出到页面中
1,表单页面 shangpin.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...
- javascript 红宝书笔记之数据类型
typeof 检测给定变量的数据类型,通过typeof来区分函数和其它对象 var message = 'some string'; console.log(typeof(message) ...
- Eclipse-导入maven项目
在Eclipse project explorer中右击,在弹出框中选择import,得到如下图所示: 选择Existing Maven Projects,并点击Next,得到如下图所示对话框: 选择 ...
- Android GUI系统
图解Android - Android GUI 系统 (1) - 概论 图解Android - Android GUI 系统 (2) - 窗口管理系统 图解Android - Android GUI ...
- 关于property的一些知识
@property (nonatomic,assign,readonly) CGRect retweetViewFrame; retweetViewFrame设置为readonly,只有get方法,没 ...
- 【BZOJ-1441】Min 裴蜀定理 + 最大公约数
1441: Min Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 471 Solved: 314[Submit][Status][Discuss] De ...
- 20150706 test2
净心守志:可会至道.譬如磨镜:垢去明存.断欲无求:当得宿命
- 用python来调试网络程序
需要联调的程序,沟通联调起来总是各种麻烦,如果自己能写个简单一点的“测试机”,事情就很easy了:或者有时候想做“中间人”,看看网路上到底传些什么.前面写了串口的测试机,今天尝试了一下UDP的. im ...