js-面向对象
来源:互联网 发布:淘宝食品特种经营认证 编辑:程序博客网 时间:2024/06/14 19:21
在学习过程中我们需要用到js的面向对象的编程,所以需要从头学起,整理一些js中面向对象的资料
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,记录以下一些方法:
一、直接定义
我们把猫看成一个对象,他有名字和年龄两个属性
- var Cat = {
- name = '';
- color = '' ;
- }
下面生成两个对象
- var cat1 = {}; // 创建一个空对象
- cat1.name = "大毛"; // 按照原型对象的属性赋值
- cat1.coler = '黄色';
- var cat2 = {};
- cat2.name = "二毛";
- cat2.color = '红色';
二、构造函数模式
为了解决从原型对象生成实例的问题,js提供了一个构造函数(constructor)模式。所谓构造函数就是一个普通函数,但是内部使用this,对构造符使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
那么猫的原型对象就可以写成:
- function Cat(name,color){
- this.name=name;
- this.color=color;
- }
猫的实例对象就是
- var cat1 = new Cat("大毛","黄色");
- var cat2 = new Cat("二毛","黑色");
- alert(cat1.name); // 大毛
- alert(cat1.color); // 黄色
三、Prototype模式
js中规定每个构造函数都有一个prototype属性,只想另一个对象。这个对象的所有属性和方法,都会被狗仔函数的实例继承这意味着,我们可以把那些不变的属性和方法直接定义在prototype对象上。
猫的原型对象就可以这样
- function Cat(name,color){
- this.name = name;
- this.color = color;
- }
- Cat.prototype.type = "猫科动物";
- Cat.prototype.eat = function(){alert("吃老鼠")};
生成实例
- var cat1 = new Cat("大毛","黄色");
- var cat2 = new Cat("二毛","黑色");
- alert(cat1.type); // 猫科动物
- cat1.eat(); // 吃老鼠
1 js中一个函数就是一个类,可以将它理解为类的构造函数,负责初始化工作。
2 可以通过new的操作符获得一个类的实例。
例如:
//定义一个hello函数
function hello(){
alert("hello");
}
//通过new一个函数获得一个对象
var obj=new hello();
alert(typeof(obj));
3 对象的属性和方法
其他语言中,对象一旦生成,就不可更改,要为一个对象添加、修改成员必须要在对应的类中修改,并重新实例化,程序也必须重新编译。JavaScript提供了灵活的机制来修改对象的行为,可以动态添加、修改、删除属性和方法。例如:先用类Object来创建一个空对象user:
var user=new Object();
(1) 获取属性或方法
a) 对象名.属性(方法)名
b) 对象名["属性(方法)名"]
(2) 添加属性
a) 添加属性:
user.name="jack";
user.age=21;
user.sex="male";
b) 添加方法
user.alert=function(){
alert("myname is:"+this.name);
}
(3) 修改属性和方法
修改一个属性和方法的过程就是用新的属性替换旧的属性,例如:
user.name="tom";
user.alert=function(){
alert("hello,"+this.name);
}
(4) 删除属性和方法
删除一个属性和方法的过程也很简单,就是将其置为undefined:
user.name=undefined;
user.alert=undefined;
这样就删除了name属性和alert方法。
4 无类型对象
传统的面向对象语言中,每个对象都会对应到一个类。上一节讲this指针时提到,JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供了一种简单的方式来创建对象,即大括号({})语法:
{
property1:statement,
property2:statement2,
…,
propertyN:statmentN
}
通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号隔开),来实现对象的定义,这段代码就直接定义个了具有n个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。
5 prototype原型对象
prototype 对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是“Function”,但它们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
- js面向对象尝试
- js面向对象
- 面向对象的js
- js中的面向对象
- JS面向对象
- JS面向对象2
- 06 JS面向对象
- JS 面向对象
- JS面向对象例子
- 面向对象 js 打包
- js面向对象设计
- js面向对象
- js--面向对象
- js面向对象总结
- js面向对象工作总结
- js面向对象
- js面向对象
- js面向对象思想
- 1040. 有几个PAT(25)
- 友元函数
- 阿里巴巴离职DBA职业生涯总结:突然35岁
- bzoj3168 [Heoi2013]钙铁锌硒维生素
- 使用AFNetworking进行序列化
- js-面向对象
- C++ —面向对象之多态的实现与应用
- Jsoup解决url
- iOS开发:个人对于textView基础用法的总结(其一)
- 小Q系列故事——为什么时光不能倒流
- CentOS6.7 修改MySQL默认的数据文件目录
- C# Treeview控件绘制
- Eclipse 安装插件开发JavaEE
- MyEclipse----快捷键大全