JS-构造函数2
一.如何创建对象
1.对象字面量
var obj1={
name:"吻别",
singer:"张学友",
type:"流行"
}
2.构造函数
var obj=new Object();
obj.name="刘德华";
obj.age=45;
obj.hobby=function () {
console.log("唱歌");
};
3.封装简单的工厂函数 (不推荐使用)
function createSong(Name,Age){
var o=new Object();
o.name=Name;
o.age=Age;
o.hobby=function () {
console.log("让我唱首歌");
};
return o
}
var obj1=createSong("刘德华",45);
var obj2=createSong("张学友",36);
console.log(obj1.hobby()); 4.自定义构造函数
//构造函数是用来初始化对象 (给对象新增成员)
//并且和new关键字同时出现
//new是用来创建对象的
//构造函数名首字母要大写 以示区分
function Person() {
//默认隐含的操作,把刚用new新创建出的对象赋值给this
this.name="尼古拉斯";
this.age="36";
this.sayHello=function () {
console.log("hello world");
}
}
var P=new Person();//new object() 5.原型解决构造函数中的问题
//构造函数 原型解决问题
function Person(name,age,gender) {
this.name=name;
this.age=age;
this.gender=gender;
// this.sayHello=function () {
// console.log("我叫"+this.name);
// }//此处会导致代码的多次重复浪费,所以解决方法用原型
}
Person.prototype.sayHello=function () {
console.log("我叫"+this.name);
}
var p1=new Person("刘德华",18,"male"); //实例化
var p2=new Person("张学友",16,"male");//实例化
p1.sayHello();
p2.sayHello(); 6.实例化
实例化:通过构造函数创建对象的过程 7.原型对象的使用方法
//1.利用对象的动态特性给原型对象添加成员
Person.prototype.sayHello=function () {
console.log("我叫"+this.name)
};
p=new Person("刘德华",18,"male");
p.sayHello(); //2.直接替换原型对象
Person.prototype={
msg:"you are a good boy",
func:function () {
console.log(this.msg);
}
};
p1=new Person("张学友",20,"male");
//此处p1不能调用sayHello()方法,因为他是原型对象从新创建之后,创建出来的
console.log(p1.msg); 8.使用原型注意事项
1.使用对象访问属性的时候,如果在本身找不到就会去原型找
2.但是使用.语法赋值的时候并不会去原型中找
3.使用.语法赋值的时候,如果对象中不存在该属性时,就会给该对象新增该属性,而不会新增原型中的属性
4.如何在原型中的属性是引用类型属性,那么所有对象共用该属性,并且一个对象修改了该引用类型属性中
的成员,其他对象也都会受影响
5.一般情况下不会将属性放入到原型对象中去,一般情况下原型对象中只会放共享的方法 //构造函数 通过constructor可以找到构造函数
function Person(name,age,gender,car) {
this.name=name;
this.age=age;
this.gender=gender;
this.car=car;
}
var x={
brand:"byd"
};
var p1=new Person("张学友",12,"male",x);
console.log(Person.prototype.constructor);
var p2=new p1.constructor("刘德华",45,"male",x); //通过constructor可以找到构造函数
console.log(p2.name)
JS-构造函数2的更多相关文章
- JS构造函数的用法和JS原型
$(function(){ var rec = new Rectangle(5, 10); //alert(rec.width + "*" + rec.height + " ...
- 谈谈JS构造函数
//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(msg) ...
- Class和普通js构造函数的区别
Class 在语法上更加贴合面向对象的写法 Class 实现继承更加易读.易理解 更易于写 java 等后端语言的使用 本质还是语法糖,使用 prototype Class语法 typeof Math ...
- js 构造函数 & 静态方法 & 原型 & 实例方法
js 构造函数 & 静态方法 & 原型 & 实例方法 ES5 "use strict"; /** * * @author xgqfrms * @licens ...
- 深入研究js构造函数和原型
很快就要从新浪离职了,最近心情比较轻松,抽点空整理一下构造函数和原型的机理. 我们都知道,在经典设计模式中我们最常用的就是工厂模式.构造函数模式.原型模式这几种,听起来‘模式’好像很高大上的样子,实际 ...
- js构造函数,索引数组和属性的属性
本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点 <script> function p(){ var len=argume ...
- JS构造函数原理与原型
1.创建对象有以下几种方式: ①.var obj = {}; ②.var obj = new Object(); ③.自定义构造函数,然后使用构造函数创建对象 [构造函数和普通函数的区别:函数名遵循大 ...
- js 构造函数(construction)与原型(prototype)
1.面向对象:js原型 java有class和instance,js仅仅有构造函数(function Cat(name,age){this.name=name;this.age=age}),为了实现数 ...
- JS构造函数、对象工厂、原型模式
1.对象创建的3中方法 1.1.对象字面量 var obj = { name: "mingzi", work: function () { console.log("wo ...
- 完整原型链详细图解之JS构造函数、原型 原型链、实例化对象
一.首先说一下什么是构造函数: 构造函数:用来在创建对象时初始化对象.特点:构造函数名一般为大写字母开头:与new运算符一起使用来实例化对象. 举例: function Person(){} //Pe ...
随机推荐
- window开机启动项设置和取消方法
window开机启动项1.添加开机启动项:开始-->所有程序-->启动-->双击(xp系统)或右键打开,把需要启动的软件快捷键拖放进去即可,遇到安全软件的拦截,只需选择 " ...
- Hive学习之路 (五)DbVisualizer配置连接hive
一.安装DbVisualizer 下载地址http://www.dbvis.com/ 也可以从网上下载破解版程序,此处使用的版本是DbVisualizer 9.1.1 具体的安装步骤可以百度,或是修改 ...
- 微服务:Java EE的拯救者还是掘墓人?
有人认为,微服务的大行其道是在给Java EE下达死刑判决书.也有人认为,Java EE已死的论调可笑至极.读者朋友,你们怎么看? 引言 有人说,Java确实过于臃肿,经常“小题大做”.但PHP.No ...
- Hadoop MapReduce执行过程实例分析
1.MapReduce是如何执行任务的?2.Mapper任务是怎样的一个过程?3.Reduce是如何执行任务的?4.键值对是如何编号的?5.实例,如何计算没见最高气温? 分析MapReduce执行过程 ...
- 自动对比度的opencv实现
在http://www.cnblogs.com/Imageshop/archive/2011/11/13/2247614.html 一文中,作者给出了“自动对比度”的实现方法,非常nice 实际实现过 ...
- Android实践项目汇报(总结)-修改
天气客户端开发报告 1系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还可以提示 ...
- linux下如何使用命令行配置网络
答:一共分成以下几个步骤: 注:笔者使用的是ubuntu 1.设置ip sudo ifconfig eth0 192.168.1.121 2.设置网关 sudo route add default g ...
- P3466 [POI2008]KLO-Building blocks
目录 题目 思路 错误 代码 题目 luogu csdn好像限制了展开博客次数,真的好xx 思路 显然一段区间内的值一定是他的中位数 少一点比多一点好 然后就可以枚举区间了 区间答案为 val[mid ...
- POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解
题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做.A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h ...
- [BZOJ4391][Usaco2015 dec]High Card Low Card dp+set+贪心
Description Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of ...