<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body> </body>
<script>
//实例对象
var per1={
name:"卡卡西",
age:20,
sex:"男",
eat:function(){
console.log("吃拉面");
},
readBook:function(){
console.log("西游记");
}
}
//调用系统的构造函数创建对象
var per2=new Object();
per2.name="大蛇丸";
per2.age=30;
per2.sex="男";
per2.eat=function(){
console.log("吃榴莲");
};
per2.play=function(){
console.log("玩蛇");
}
//自定义构造函数
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.play=function(){
console.log("天天打游戏");
};
} var per=new Person("小樱",18,"女");
console.log(per.name);
per.play(); //工程模式创建对象
function creatObject(name,age){
var obj=Object();
obj.name=name;
obj.age=age;
obj.syHi=function(){
console.log("你好");
};
return obj;
} //自定义构造函数和工程模式区别
/**
* 共同点:都是函数,都可以创建对象,都可以传入参数
* 工厂:
* 函数名是小写的
* 有new
* 有返回值
* new之后的对象是当前的对象
*直接调用函数就可以创建对象
*
* 自定义构造函数:
* 函数名是大写的首字母
* 没有new
* 没有返回值
* this是当前对象
* 通过new的方式创建对象
* **/ function Pers(name,age){
this.name=name;
this.age=age;
}
//通过原型来添加方法,解决数据共享,节省内存空间
Pers.prototype.eat=function(){
console.log("吃凉菜");
}
var p1=new Pers("小明",20);
var p2=new Pers("小红",30);
console.log(p1.eat==p2.eat);//结果为真
</script>
</html>

  

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>

</body>
<script>
//实例对象
var per1={
name:"卡卡西",
age:20,
sex:"男",
eat:function(){
console.log("吃拉面");
},
readBook:function(){
console.log("西游记");
}
}
//调用系统的构造函数创建对象
var per2=new Object();
per2.name="大蛇丸";
per2.age=30;
per2.sex="男";
per2.eat=function(){
console.log("吃榴莲");
};
per2.play=function(){
console.log("玩蛇");
}
//自定义构造函数
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.play=function(){
console.log("天天打游戏");
};
}

var per=new Person("小樱",18,"女");
console.log(per.name);
per.play();

//工程模式创建对象
function creatObject(name,age){
var obj=Object();
obj.name=name;
obj.age=age;
obj.syHi=function(){
console.log("你好");
};
return obj;
}

//自定义构造函数和工程模式区别
/**
* 共同点:都是函数,都可以创建对象,都可以传入参数
* 工厂:
* 函数名是小写的
* 有new
* 有返回值
* new之后的对象是当前的对象
*直接调用函数就可以创建对象
*
* 自定义构造函数:
* 函数名是大写的首字母
* 没有new
* 没有返回值
* this是当前对象
* 通过new的方式创建对象
* **/

function Pers(name,age){
this.name=name;
this.age=age;
}
//通过原型来添加方法,解决数据共享,节省内存空间
Pers.prototype.eat=function(){
console.log("吃凉菜");
}
var p1=new Pers("小明",20);
var p2=new Pers("小红",30);
console.log(p1.eat==p2.eat);//结果为真
</script>
</html>

js面向对象编程思想的更多相关文章

  1. 面向对象编程思想(前传)--你必须知道的javascript

    在写面向对象编程思想-设计模式中的js部分的时候发现很多基础知识不了解的话,是很难真正理解和读懂js面向对象的代码.为此,在这里先快速补上.然后继续我们的面向对象编程思想-设计模式. 什么是鸭子类型 ...

  2. 面向对象编程思想(前传)--你必须知道的javascript(转载)

    原文地址:http://www.cnblogs.com/zhaopei/p/6623460.html阅读目录   什么是鸭子类型 javascript的面向对象 封装 继承 多态 原型 this指向 ...

  3. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  4. 面向对象编程思想(OOP)

    本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞 ...

  5. IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★

    IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...

  6. Js面向对象编程

    Js面向对象编程 1.     什么是面向对象编程? 我也不说不清楚什么是面向对象,反正就那么回事吧. 编程有时候是一件很快乐的事,写一些小游戏,用编程的方式玩游戏等等 2.     Js如何定义一个 ...

  7. js原生设计模式——3简单工厂模式\js面向对象编程实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

    接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...

  9. JS面向对象编程(进阶理解)

    JS 面向对象编程 如何创建JS对象 JSON语法声明对象(直接量声明对象) var obj = {}; 使用 Object 创建对象 var obj = new Object(); JS对象可以后期 ...

随机推荐

  1. 半夜思考,为什么 String 具有不变性

    学习 Java 的数据类型时,特殊关照了 String 类型,具有不变性. 当时没有深入思考为什么 String 有不变性.而且我只碰到了 String 才有不变性.Java这样设计的缘由何在. 突然 ...

  2. 多线程-Thread的run()与start()的区别

    总结: 1) start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调用Thread类的start()方法来启动一个线程,这 ...

  3. delphi开发学习四:TClientDataSet与TDataSetProvider控件使用实例

    1.TClientDataSet控件 通过TClientDataSet控件可以建立瘦客户端的应用程序,且数据执行效率较高,但它不能和数据库自动连接,程序中必须制定它如何获取数据.一般情况下,TClie ...

  4. struts下载文件

  5. Post Lamps CodeForces - 990E(暴力出奇迹?)

    题意: 在一个从0开始的连续区间上  放置几个小区间,使得这些小区间覆盖整个大区间,不同长度的小区间有不同的花费,其中有m个点,小区间的左端点不能放在这些点上 解析: 显然如果0是这m点中的一个 则无 ...

  6. 所以到底什么是 Growth Hacking?

    Growth hacking 在硅谷的确是有快被用坏的趋势,之所以在大陆的互联网创业圈里还没有普及开来,我想一个是由于这个词并没有对应的中文解释,没有一个能够找到一个相对完美的解释,就像 “hack” ...

  7. 如何在低速率网络中测试 Web 应用

    大家看到标题后的第一个问题可能是:“我们需要这样做吗?” 如果我们开发的是局域网 Web 应用的话,可能没有必要这样做.但如果我们的 Web 应用面向的是互联网上的成千上万的用户,这样做就很必要了.因 ...

  8. 关于表单中Readonly和Disabled

    Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...

  9. cocoaPods安装、更新第三方库

    pod install 换成 pod install --verbose --no-repo-update pod update 换成 pod update --verbose --no-repo-u ...

  10. GNU C ------ __attribute__

    attribute是GNU C特色之一,attribute可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和类型属性(Type Attri ...