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 相关文章推荐
Javascript公共脚本库系列(一): 弹出层脚本
Feb 24 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
Sep 11 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
Apr 28 Javascript
JS验证全角与半角及相互转化的介绍
May 18 Javascript
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
详解关于微信setData回调函数中的坑
Feb 18 Javascript
使用flow来规范javascript的变量类型
Sep 12 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
vue使用showdown并实现代码区域高亮的示例代码
Oct 17 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 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中调用JAVA
2006/10/09 PHP
flash用php连接数据库的代码
2011/04/21 PHP
PHP编程函数安全篇
2013/01/08 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php实现购物车功能(下)
2016/01/05 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
应用服务器有那些
2012/01/19 面试题
办公室驾驶员岗位职责
2013/11/15 职场文书
职工小家建设活动方案
2014/08/25 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
金砖之国观后感
2015/06/11 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Oracle用户管理及赋权
2022/04/24 Oracle