// 作业

//深度拷贝

var
obj = {

name:'rong',

age:'25',

card:['visa','alipay'],

nam :['1','2','3','4','4']

}

 

function
clone (orig,target){

var
target = target||{};

 

var
arrstr= '[object Array]';

 

for(var
prop
in
orig){

if(orig.hasOwnProperty(prop)){

 

if (typeof(orig[prop]) == 'object'){

if((Object.prototype.toString.call(orig[prop])) == arrstr)

{

target[prop] = [];

}else{

target[prop] = {};

}

clone(orig[prop],target[prop]);

 

}else{

target[prop] = orig[prop];

}

}

}

return
target;

}

var
obj1 = {};

clone(obj,obj1);

 

//三步运算符
?:
判断条件

则走前面

则走后边

//简化代码

 

var
obj = {

name:'rong',

age:'25',

card:['visa','alipay'],

nam :['1','2','3','4','4']

}

 

function
clone (orig,target){

var
target = target||{};

 

var
arrstr= '[object Array]';

 

for(var
prop
in
orig){

if(orig.hasOwnProperty(prop)){

 

if (typeof(orig[prop]) == 'object'){

 

target[prop] = ((Object.prototype.toString.call(orig[prop])) == arrstr)?

[]:{};

clone(orig[prop],target[prop]);

 

}else{

target[prop] = orig[prop];

}

}

}

return
target;

}

var
obj1 = {};

clone(obj,obj1);

 

//toString s必须大写

// hasOwnProperty

// Object.prototype.toString.call O大写

 

//数组操作方法

 

// push()---从数组最后一位开始插入数据(参数)
返回值为数组长度

// pop()----剪切数组最后一位数据
(没有参数,返回值为最后一位数据)

 

// unshift() ----从数组第一位插入数据

// shift() ----剪切数组第一位数据

 

// splice() 从第几位开始,截取多少长度,在切口处添加新数据,添加的数据长度不一定等于截取的数据,返回值为截取数据组成的数组

 

// reverse() 数字逆转顺序
返回逆转后的数组

 

// sort()

// 对数组进行排序,返回值为改变后的数组,按照字符串的ascall码排序,空值为默认值,升序排列

// 参数必须为函数

// 1、必须写俩形参

// 2、看返回值,当返回值为负数时,那么前面的数放前面

// 为正数,那么后边的数放在前面

,不动

 

// concat 链接两个数组
并返回一个新数组,原数组不变 arr.concat(arr1) ,将arr1数组内容加到arr后边,返回一个新数组


从第一位开始截取到第3位(含)并返回截取部分数组,原数组不改变,一位参数为从第n位开始

// 截取到末位,无参数为截取整个数组

// jion('-') 参数为字符串,按照字符串中内容为连接符连接数组,返回一个字符串

// split('-') 按照参数将字符串拆分成字符串
与jion逆操作

// 类数组

// 属性要为索引(数字)
属性,必须有length属性,最好有push方法

 

// 作业

// 封装typeof

// typeof的返回值共有六种:

// number, boolean, string, undefined, object, function.

 

// number

// typeof(10);

// typeof(NaN);

// //NaN在JavaScript中代表的是特殊非数字值,它本身是一个数字类型。

// typeof(Infinity);

//

/////////2.boolean

// typeof(true);

// typeof(false);

 

//////// 3.string

// typeof("abc");

 

// ///////4.undefined

// typeof(undefined);

// typeof(a);//不存在的变量

 

// ///////5.object

// 对象,数组,null返回object

// typeof(null);

// typeof(window);

 

// //////6.function

// typeof(Array);

// typeof(Date);

 

//分类 number string boolean function undefind 无需判断
只需判断object

 

function
type(a) {

if(typeof(a) !=="object"){

return
typeof(a);

}else {

return
Object.prototype.toString.call(a);

}

 

}

 

// 数组去重

// 要求在原型链编程

Array.prototype.unique = function (){

var
b = [];

for(var
i = 0; i < this.length; i++){

for(var
j = 0;j < b.length; j++){

if(this[i] === b[j])

{break;}

}

if(j == b.length){b.push(this[i])}

}

return
b;

 

}

//利用对象的特性,属性名不能重复,为每个属性赋值,依次判断是否有值

Array.prototype.unique = function (){

var
obj = {},

arr = [],

len = this.length;

for(var
i = 0;i < len; i++ ){

if(!obj[this[i]]){

obj[this[i]]= "1";

//判断obj中this[i]是不是undefind,如果是
就说明此属性名没有,则赋值1,

arr.push(this[i]);

}

}

return
arr;

}

 

 

//函数形式

// function test (a){

// var b = [];

// for(var i = 0; i < a.length; i++){

// for(var j = 0;j < b.length; j++){

// if(a[i] === b[j])

// {break;}

// }

// if(j == b.length){b.push(a[i])}

// }

// return b;

 

// }

Js笔记-第17课的更多相关文章

  1. 奇舞js笔记——第0课——如何写好原生js代码

    摘要 1.好的代码职责要清晰,javscript不要用来操作样式: 2.API要设计的合理:通用性,适度的抽象(数据抽象,过程抽象),可扩展性: 3.效率问题:用好的.合适的算法(前端程序员要把自己当 ...

  2. Js笔记-第11课

    // 第11课         作用域精解     运行期上下文,当函数执行时,会创建一个成为执行期上下文的内部对象.一个执行期上下文定义了一个函数执行时的环境,函数每次执行时对应的执行期上下文都是独 ...

  3. CoolBlog开发笔记第2课:搭建开发环境

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 前言 今天是CoolBlog开发笔记的第2课,我们将要讲解的是开发环境的搭建.俗话说"工欲善其事必先利其器",Djang ...

  4. CoolBlog开发笔记第4课:数据库模型设计

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 1.3 CoolBlog开发笔记第3课:创建Django应用 前言 我新书<Py ...

  5. CoolBlog开发笔记第5课:请求与响应

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 1.3 CoolBlog开发笔记第3课:创建Django应用 1.4 CoolBlog ...

  6. SQL 必知必会-- 第17课:创建和操作表

    我这里用的是oracle 10g,PL/SQL来做的. 第17课  创建和操纵表  14517.1  创建表  14517.2  更新表  15017.3  删除表  15317.4  重命名表  1 ...

  7. Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service

    原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:&l ...

  8. CoolBlog开发笔记第3课:创建Django应用

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 前言 经过上一节我们已经创建了CoolBlog工程,但是关于CoolBlog的功能代码 ...

  9. 第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

    第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  ...

随机推荐

  1. 《深入理解Java虚拟机》笔记04 -- 并发锁

    Java虚拟机在操作系统层面会先尽一切可能在虚拟机层面上解决竞争关系,尽可能避免真实的竞争发生.同时,在竞争不激烈的场合,也会试图消除不必要的竞争.实现这些手段的方法包括:偏向锁.轻量级锁.自旋锁.锁 ...

  2. [Xcode 实际操作]七、文件与数据-(6 )通过通知中心,实现监听和处理程序退出事件的功能

    目录:[Swift]Xcode实际操作 本文将演示通过通知中心,实现监听和处理程序退出事件的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import U ...

  3. git 的基本设置以及使用

    https://www.linuxidc.com/Linux/2018-05/152611.htm 详解git add , git commit , git push, 等命令 https://blo ...

  4. Python集合的常用操作

    字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...

  5. 查询索引range失效

    在某一个时间字段加索引,短的时间范围内查询,索引生效,为range.长时间范围,索引失效,查全表. 当索引查的数据量超过全表30%的数据,索引失效,会查全表.

  6. WebApi迁移ASP.NET Core2.0

    WebApi迁移ASP.NET Core2.0 一步一步带你做WebApi迁移ASP.NET Core2.0   随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的AS ...

  7. (转)linux实战考试题:批量创建用户和密码-看看你会么?

    老男孩教育第五关实战考试题:批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现. 方法1:[roo ...

  8. 六,IO系统

    六,IO系统 一,数据源 1,数据源--管道确认使用那根管道--节点流 2,先确定管道在tey中new出管道,new出后就写关闭代码,写完关闭代码在写中间代码 3,取数据和放数据结束语句必须有两个,不 ...

  9. [luogu 1967]货车运输

    货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...

  10. 啊哈算法之宽搜BFS解救小哈

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第四章第三节的题目——BFS算法再次解救小哈.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,以此来理解BFS算法.关 ...