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 相关文章推荐
FormValid0.5版本发布,带ajax自定义验证例子
Aug 17 Javascript
JavaScript 序列化对象实现代码
Dec 18 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
node.js的事件机制
Feb 08 Javascript
借助node实战JSONP跨域实例
Mar 30 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JS 控件事件小结
2012/10/31 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python映射拆分操作符用法实例
2015/05/19 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
国庆宣传标语
2014/06/30 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
2015年领班工作总结
2015/04/29 职场文书
党章学习心得体会2016
2016/01/14 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis
Python列表的索引与切片
2022/04/07 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript