JS克隆,属性,数组,对象,函数实例分析


Posted in Javascript onNovember 26, 2016

本文实例讲述了JS克隆,属性,数组,对象,函数。分享给大家供大家参考,具体如下:

<script type="text/javascript">
/* 克隆原型得到对象 */
function clone(object) {
  function F() {}
  F.prototype = object;
  return new F;
}
var Person = {
 name: 'default name',
 getName: function() {
  return this.name;
 }
};
var reader = clone(Person);
console.log(reader.getName()); // This will output 'default name'.
reader.name = 'John Smith';
console.log(reader.getName()); // This will now output 'John Smith'.
/* Author Prototype Object. */
var Author = clone(Person);
Author.books = []; // 书数组
Author.getBooks = function() {
 return this.books;
}
var author = [];
author[0] = clone(Author);
author[0].name = 'Dustin Diaz';
author[0].books = ['JavaScript Design Patterns'];
author[1] = clone(Author);
author[1].name = 'Ross Harmes';
author[1].books = ['JavaScript Design Patterns','PHP','Mysql'];
console.log(author[0].getName());
console.log(author[0].getBooks());
console.log(author[1].getName());
console.log(author[1].getBooks());
</script>

结果

JS克隆,属性,数组,对象,函数实例分析

这里的console.log很有意思,比alert有意思,alert不能获取全部数据,需要一个个弹出。

js的数组定义也很有意思。

进一步升级

<script type="text/javascript">
/* 克隆原型得到对象 */
function clone(object) {
  function F() {}
  F.prototype = object;
  return new F;
}
var Person = {
 name: 'default name',
 getName: function() {
  return this.name;
 }
};
var Author = clone(Person);
Author.books = []; // 书数组
Author.getBooks = function() {
 return this.books;
}
var authorClone = clone(Author);
console.log(authorClone.name); // string 'default name'.
authorClone.name = 'new name'; // 重新赋值
console.log(authorClone.name); // Now linked to the primative authorClone.name, which
// is the string 'new name'.
console.log(Author.getName()); // 没有改变,任然是 'default name'
console.log(Author.getBooks()); // 空的
authorClone.books.push('new book'); // Author被改了
authorClone.books.push('new new book'); // Author被改了
console.log(Author.getBooks()); // array 'new book'
console.log(authorClone.getBooks()); // array 'new book'
authorClone.books = []; // 定义了属于自己的books数组
authorClone.books.push('new book2'); // We are now modifying that new array.
authorClone.books.push('new book3');
authorClone.books.push('new book4');
console.log(authorClone.getBooks());
console.log(Author.getBooks());
var CompoundObject = {
 string1: 'default value',
 childObject: {
  bool: true,
  num: 10
 },
 getChild: function() { // 返回对象Object
  return this.childObject;
 }
}
var compoundObjectClone = clone(CompoundObject);
compoundObjectClone.childObject.num = 5; // 不好的方式
compoundObjectClone.childObject = { // 好一点的方式
 bool: true,
 num: 5
};
console.log(compoundObjectClone.getChild());
</script>

结果:

JS克隆,属性,数组,对象,函数实例分析

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery each()方法的使用方法
Mar 18 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
jquery清空表单数据示例分享
Feb 13 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
JavaScript每天必学之基础知识
Sep 17 Javascript
JavaScript实现通过select标签跳转网页的方法
Sep 29 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
Jul 24 Javascript
浅析JavaScript中的特殊数据类型
Dec 15 Javascript
JS匿名函数类生成方式实例分析
Nov 26 #Javascript
正则表达式替换html元素属性的方法
Nov 26 #Javascript
js初始化验证实例详解
Nov 26 #Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 #Javascript
JS匿名函数实例分析
Nov 26 #Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 #Javascript
JS类的定义与使用方法深入探索
Nov 26 #Javascript
You might like
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python常用库推荐
2016/12/04 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
美国购车网站:TrueCar
2016/10/19 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
保险内勤岗位职责
2014/04/05 职场文书
超市活动计划书
2014/04/24 职场文书
2014年国庆节寄语
2014/09/19 职场文书
酒店辞职书范文
2015/02/26 职场文书
父亲节寄语大全
2015/02/27 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL