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的一个简单的脚本验证插件
Apr 05 Javascript
Prototype的Class.create函数解析
Sep 22 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
javascript中定义私有方法说明(private method)
Jan 27 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP7修改的函数
2021/03/09 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
django 外键model的互相读取方法
2018/12/15 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
python matlab库简单用法讲解
2020/12/31 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
委托书范本
2014/04/02 职场文书
2014高考励志标语
2014/06/05 职场文书
保密工作承诺书
2014/08/29 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
2015年药店工作总结
2015/04/20 职场文书
教师岗位说明书
2015/09/30 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python