首页 > 编程语言 >JavaScript

JavaScript

时间:2023-06-25 12:13:09浏览次数:43  
标签:function console name JavaScript let var document

JavaScript

HTML(结构层)

CSS(表现层)

JavaScript(行为层)

什么是JavaScript

JavaScript是一门世界上最流行的脚本语言。

一个合格的后端人员,必须要精通JavaScript

历史

ECMScript它可以理解为是JavaScript的一个标准。

最新版本已经到es6版本。

但是大部分浏览器还只停留在支持es5代码以上!

开发环境——线上环境,版本不一样。

快速入门

引入JavaScript

外部引入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--script标签中,写JavaScript代码-->
<!--外部引入-->
    <script src="qj.js">
    </script>
</head>
<body>
<!--这里也可以存放-->
</body>
</html>
alert('hello,word');

内部引入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--script标签中,写JavaScript代码-->
<!--内部引入-->
    <!--注意script要成对出现-->
    <script>
        alert('hello,word');
    </script>
</head>
<body>
<!--这里也可以存放-->
</body>
</html>

基本语法入门

浏览器必备调试须知

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script >
        //1.定义变量    变量类型  变量名=变量值;
         var score=71;
        // alert(num);
      //2.条件控制
        if(score>60&& score<70){
            alert("60-70");
        }else if(score>70&& score<80){
            alert("70-80")
        }else {
            alert("other");
        }
//console.log(score)在浏览器的控制后台打印变量!System.out.println();
    </script>
</head>
<body>

</body>
</html>

数据类型

变量

var a;

数值,文本,图形,音频,视频.....

number

js不区分小数和整数,统一用Number

123//整数123
123.1//浮点数123.1
1.23e3//科学计数法
-99//复数
NaN//not a number
Infinity//表示无限大

字符串

'abc' "abc"

布尔值

true,false

逻辑运算

&& 两个都为真,结果为真
||一个为真,则结果为真
!真即假,假即真

比较运算符!!!重要

= 赋值
== 等于(类型不一样,值一样,也会判断为true)
=== 绝对等于(类型一样,值一样,结果为true)

这是js的一个缺陷,坚持不要使用==比较

须知:

  • NaN===NaN,false 这个与所有的数值都不相等,包括自己。
  • 只能通过isNaN(NaN)来判断这个是否是NaN

浮点数问题

console.log((1/3)===(1-2/3));

尽量避免使用浮点数进行运算,存在精度问题。

console.log(Math.abs(1/3-(1-2/3))<0.0000001);//使用此方式

null和undefine

  • null 空
  • undefine 未定义

数组

一系列相同类型的对象。

Java的数字必须是相同类型的对象,JS中不需要这样。

      //保证代码的可读性,尽量使用[]
var arr=[1,2,3,4,5,'hello',null,true];
new Array(1,2,3,4,5,'hello');
  </script>

取数组下标,如果越界了,就会

undefined

对象

对象是用{},数组是[]

每个属性之间使用逗号隔开,最后一个不需要添加。

//Person person=new Person(1,2,3,4,5);
var person={
name:"qinjiang",
age:3,
tags:['js','java','web','...']
}

取对象的值

person.name
>'qinjiang'
person.age
>3

严格检查模式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--
前提:IDEA需要设置支持ES6语法
'use script';严格检查模式,预防JavaScript的恶意性导致产生的一些问题
必须写在JavaScript的第一行
局部变量建议使用let去定义
-->
<script >
    'use script';
    //全局变量
  let i=1;
  //es6 let
</script>
</body>
</html>

数据类型

字符串

  1. 正常字符串,我们使用单引号或者双引号包裹。

  2. 需要注意转义字符 \

    \' 字符串
    \n 换行
    \t table
    \u4e2d unicode编码 \u####
    \x41   Ascall编码
    
  3. 多行字符串编写

     //tab上面,esc下面的按键
        var msg=`hello
        word
        你好`
    
  4. 模板字符串

    //tab上面,esc下面的按键
        let name="qinjiang";
        let age=3;
        let msg=`你好,${name}`;
    

    可直接输出

    console.log(msg)
    >你好,qinjiang
    
  5. 字符串长度

    str.length
    
  6. 字符串的可变性,不可变

  7. 大小写转换

    //注意这里是方法,不是属性了
    student.toUpperCase()
    student.toLowerCase()
    
  8. student.indexOf("t")

  9. substring

    [)
    studten.substring(1);//从第一个字符串截取到最后一个字符串
    

数组

Array可以包含任意的数据类型。

var arr=[1,2,3,4,5,6];//通过下标取值和赋值
arr[0]
arr[0]=1
  1. 长度

    注意:假如给arr.length赋值,数组大小就会发生变化。如果赋值过小,元素就会丢失。

    arr.length
    
  2. indexOf:通过元素获得下标索引

arr.indexOf(2)
1

字符串的“1”和数字1是不同的

  1. slice() 截取数组的一部分,返回一个新数组,类似于String中的substring

  2. push,pop 在尾部进行添加和删除

    push:插入到尾部
    pop:弹出尾部的一个元素
    arr
    (7) [1, 2, 3, 4, 1, 5, 6]
    arr.push("a","b")
    9
    arr
    (9) [1, 2, 3, 4, 1, 5, 6, 'a', 'b']
    arr.pop("b")
    'b'
    arr
    (8) [1, 2, 3, 4, 1, 5, 6, 'a']
    
  3. unshfit,shift 在头部进行添加和删除

unshift:压入到头部
shift:弹出头部的一个元素
arr.shift("1")
1
arr
(7) [2, 3, 4, 1, 5, 6, 'a']
arr.unshift("3")
8
arr
(8) ['3', 2, 3, 4, 1, 5, 6, 'a']
  1. 排序 sort()

    var arr=["C","A","B"]
    undefined
    arr.sort()
    (3) ['A', 'B', 'C']
    
  2. 元素反转 reverse()

['A', 'B', 'C']
arr.reverse()
(3) ['C', 'B', 'A']
  1. 拼接concat()

    arr.concat(1,2,3)
    (6) ['C', 'B', 'A', 1, 2, 3]
    

    注意:concat()并没有修改数组,只是会返回一个新数组。

  2. 连接join

    打印拼接数组,使用特定的字符串连接

    arr.join("-")
    'C-B-A'
    
  3. 多维数组

    var arr=[[1,2],[3,4],["5","6"]]
    arr[1][1]
    4
    

对象

若干个键值对

var 对象名={
       属性名:属性值,
       属性名:属性值,
       属性名:属性值
   }
   //定义了一个person对象,它有四个属性值
     var person={
    name:"kuangshen",
       age:3,
       email:"123456qq.com",
       score:0
   }

JS中的对象,(......)表示一个对象,键值对描述属性xxxx:xxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!

JavaScript中的键都是字符串,值是任意对象!

  1. 对象赋值

    person.name="qinjiang"
    'qinjiang'
    person.name
    'qinjiang'
    
  2. 使用一个不存在的对象属性,不会保存!undefined

person.haha
undefined
  1. 动态的删减性
delete person.name
true
person
  1. 动态的添加,直接给新的属性添加值即可

    person.haha="haha"
    'haha'
    person
    
  2. 判断这个属性值是否在属性中 xxx in xxx

'age' in person
true
//继承
'toString' in person
true
  1. 判断一个属性是否是这个对象自身拥有的hasOwnProperty
person.hasOwnProperty('toString')
false
person.hasOwnProperty('age')
true

流程控制

  1. if判断

    let age=3;
      if(age>3){
        alert("haha");
      }else{
          alert("kuwa~")
      }
    
  2. while循环,避免程序死循环

while (age<100){
      age=age+1;
      console.log(age);
  }

do{
      age=age+1;
      console.log(age);
  }while(age<100)

  1. for循环
for (let i = 0; i < 100; i++) {
        console.log(i);
    }
  1. forEach循环

    es5.1引入的

let age=[12,3,14,2,50,12];
   age.forEach(function (value){
       console.log(value)
   })
  1. for...in
let age=[12,3,14,2,50,12];
  //for(let index in object){}
   for(let num in age){
       if (num.hasOwnProperty(num)){
           console.log("存在");
           console.log(age[num]);
       }
   }

Map和Set

ES6的新特性

Map

//学生的成绩,学生的名字
//     let names=["tom","haha","jack"];
//     let scores=[100,90,80];
let map=new Map([['tom',90],['jack',80],['haha',100]]);
let name=map.get('tom');//通过key获得value
    map.set('admin',123456);//新增或修改
map.delete("tom");
console.log(name);

Set:无序不重复的集合

let set=new Set([3,1,1,1]);//set可以去重
    set.add(2);//添加
    set.delete(1);//删除
    console.log(set.has(3));//是否包含某个元素

iterator

ES6新特性

遍历数组

//通过for of/ for in 下标
let arr=[3,4,5];
for (let x of arr){
    console.log(x);
}

遍历map

let map=new Map([["tom",100],["jack",90]]);
for (let x of map){
    console.log(x);
}

遍历set

let set=new Set([5,6,7]);
for (let x of set){
    console.log(x);
}
let arr=[3,4,5];
for(let x in arr){
    //arr.name="213";早期的漏洞
    console.log(x);
}

函数

方法:对象(属性,方法)

函数

定义函数

public 返回值类型  方法名(){
    return 返回值;
}

定义方式一

绝对值函数

function abs(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

一旦执行到return,代表函数结束,返回结果。

如果没有执行return,函数执行完也会返回结果,结果就是undefined.

定义方式二

var abs=function(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

function(x)(.....)这是一个匿名函数,但是可以把结果赋值给abs,通过abs可以调用函数。

方式一和方式二等价

调用函数

abs(10)//10
abs(-10)//10

参数问题javascript可以传任意个参数,也可以不传参数。

参数进来是否存在问题?假设不存在参数,如何让规避?

 var abs=function(x){
            //手动抛出异常来判断
            if(typeof  x!='number'){
                throw 'Not a number';
            }
            if(x>=0){
                return x;
            }else{
                return -x;
            }
        }

arguments

arguments是JS免费赠送的一个关键字。

代表,传递进来的所有参数,是一个数组。

var abs=function(x){
        console.log("x=>"+x);
        for (var i=0;i<arguments.length;i++){
            console.log(arguments[i]);
        }
        if(x>=0){
            return x;
        }else{
            return -x;
        }
    }

问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有的参数。

rest

以前:

if (arguments.length>2){
            for (var i=2;i<arguments.length;i++){
//....
            }
        }

ES6引入的新特性,获取除了已经定义的参数之外的所有参数。

function aaa(a,b,...rest){
        console.log("a=>"+a);
        console.log("b=>"+b);
    }

rest参数只能写在最后面,必须用...标识。

变量的作用域

在JavaScript中,var定义变量实际是有作用的。

假设在函数体中声明,则在函数体外不可以使用(非要想实现的话,后面可以研究以下闭包

function qj(){
      var x=1;
      x=x+1;
  }
  x=x+2;//Uncaught ReferenceError: x is not defined

如果两个函数使用了相同的变量名,只要在函数内部就不冲突。

function qj(){
      var x=1;
      x=x+1;
  }
 function qj2(){
      var x='A';
      x=x+1;
 }

内部函数可以访问外部函数成员,就不冲突

function qj(){
 var x=1;
 //内部函数可以访问外部函数成员,就不冲突
 function qj2(){
     var y=x+1;
}z
 var z=y+1;//Uncaught ReferenceError: z is not defined
}

假设,内部函数变量和外部函数的变量,重名!

function qj(){
      var x=1;
      function qj2(){
          var x='A';
          console.log('inner'+x);//outer1
  }
  console.log('outer'+x);
      qj2();//innerA
 }
 qj()

假设JavaScript中函数查找变量从自身函数开始,有“内”向“外”查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数变量。

提升变量的作用域

function qj() {
  var x='x'+y;
  console.log(x);//xundefined
  var y='y';
  }
  qj()

结果:xundefined

说明:Js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值。

function qj2(){
      var y;
      var x="x"+y;
      console.log(x);
      y='y';
  }

这个是在javaScript建立之初就存在的特性,养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码维护。

全局函数

//全局变量
  var x=1;
  function f(){
      console.log(x);
  }
  console.log(x);

全局变量window

var x='xxx';
alert(x);
alert(window.x);//默认所有的全局变量都会自动绑定在window对象下

alert()这个函数本身也是window的一个变量。

var x='xxx';
  window.alert(x);
  var old_alert=window.alert();
  //old_alert(x);
window.alert=function (){
};
//发现alert()失效了
  window.alert(123);
  //恢复
  window.alert=old_alert;
  window.alert(456);

JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),例如没有在函数作用范围内找到,就会向外查找,如果在全局作用域没有找到,报错ReferenceError

规范

由于我们所有的全局变量都会绑定到我们的window上,如果不同的js文件,使用了相同的全局变量,冲突-->如何能够减少冲突?

//唯一全局变量
var KuangApp= {};
//定义全局变量
KuangApp.name='kuangshen';
KuangApp.add=function (a,b){
   return a+b;
}

把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突的问题JQuery $()

局部作用域 let

function aaa(){
  for (let i = 0; i < 100; i++) {
      console.log(i);
  }
  console.log(i+1);//i出了这个作用域还可以使用
}

ES6 let关键字,解决局部作用域冲突!

常量const

在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的

var PI='3.14';
 console.log(PI);
 PI='312';//可以改变这个值
 console.log(PI);

在ES6引入了常量关键字const

 const PI='3.14';//只读变量
 console.log(PI);
 PI='123';//Uncaught TypeError: Assignment to constant variable.
 console.log(PI);

方法

定义方法

方法就是把函数放在对象的里面,对象只有两个东西:属性和方法。

var kuangshen={
  name:'秦将',
  birth:2020,
    //方法
    age:function (){
      //今年-出生的年
        var now=new Date().getFullYear();
        return now-this.birth;
    }
}
//属性
kuangshen.name
//方法,一定要带()
kuangshen.age()

this.代表什么?拆开上面的代码看着

function getAge(){
  //今年-出生的年
  var now=new Date().getFullYear();
  return now-this.birth;
}
var kuangshen={
name:'秦将',
birth:2020,
//方法
age:getAge()
}

this是无法指向的,是默认指向调用它的那个对象。

apply

在js中可以控制this指向。

function getAge(){
      //今年-出生的年
      var now=new Date().getFullYear();
      return now-this.birth;
  }
var kuangshen={
  name:'秦将',
  birth:2020,
    //方法
    age:getAge()
};
getAge.apply(kuangshen,[])//this指向了kuangshen,参数为空

内部对象

标准对象

typeof 123
'number'
typeof '123'
'string'
typeof true
'boolean'
typeof NaN
'number'
typeof []
'object'
typeof Math.abs
'function'
typeof undefined
'undefined'

Date

基本使用

var now=new Date();//Fri Jun 23 2023 16:40:37 GMT+0800 (中国标准时间)
now.getFullYear();//年
now.getMonth();//月
now.getDate();//日
now.getDay();//星期
now.getHours();//时
now.getMinutes();//分
now.getSeconds();//秒
now.getTime();//时间戳 全世界统一 1970年一月一日到现在的毫秒数
console.log(new Date(1578106175991));//Sat Jan 04 2020 10:49:35 GMT+0800 (中国标准时间)

转换

Sat Jan 04 2020 10:49:35 GMT+0800 (中国标准时间)
now=new Date(1578106175991)
now toLocaleString//注意,调用是一个方式,不是一个属性
Sat Jan 04 2020 10:49:35 GMT+0800 (中国标准时间)
now.toGMTString()
'Sat, 04 Jan 2020 02:49:35 GMT'

JSON

JSON是什么

早期,所有数据传输习惯使用XML文件。

  • JSON是一种轻量级的数据交换格式。
  • 简洁和清晰的层次结构使得JSON成为理想数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在JavaScript中,一切皆为对象,任何JS支持的类型都可以用JSON来表示:number,string...

格式:

  • 对象都用{}

  • 数组都用[]

  • 所有的键值对都是key.value

JSON和JS字符串转化

var user={
   name:"qinjiang",
    age:3,
    sex:'男'
}
 //对象转化为json字符串
 var jsonUser=JSON.stringify(user)
//json字符串转化为对象 参数为json字符串
var obj=  JSON.parse('{"name":"qinjiang","age":3,"sex":"男"}')

很多人不清楚,JSON和JS对象的区别

var obj={a:'hello',b:'hellob'}
var json='{"a":"hello","b":""hellob"}'

Ajax

  • 原生的js写法 xhr异步请求
  • jQuey封装好的方法$("#name").ajax("")
  • axios请求

面向对象编程

什么是面向对象

javascript,java,c#...面向对象;java,javascript有些区别

  • 类:模板

  • 对象:具体的实例

在JavaScript这个需要大家换一下思维方式!

原型对象

var user={
       name:"qinjiang",
        age:3,
        run:function (){
           console.log(this.name+"run...");
        }
    };
    var xiaoming={
       name: "xiaoming"
    };
    //小明的原型是user
xiaoming.__proto__=user;

class继承

function Student(name){
      this.name=name;
  }
  //给student新增一个方法
  Student.prototype.hello=function (){
      alert('Hello');
  }

class关键字,是在ES6引入的

  1. 定义一个类,属性,方法

    //ES6之后
      //定义一个学生的类
      class  Student{
          constructor(name) {
              this.name=name;
          }
          hello(){
              alert('hello');
          }
      }
    var xiaoming=new Student("xiaoming")
    
    xiaoming.hello()
    
  2. 继承

  class  Student{
      constructor(name) {
          this.name=name;
      }
      hello(){
          alert('hello');
      }
  }
  class Xiaoxueshent extends Student{
      constructor(name,grade) {
          super(name)
          this.grade=grade;
      }
      myGrade(){
          alert("我是一名小学生")
      }
  }
  var xiaoming=new Xiaoxueshent("xiaoming",1);

原型链

proto

操作BOM对象(重点)

浏览器结束

JavaScript和浏览器关系?

JavaScript诞生就是为了能够让他在浏览器中运行!

BOM:浏览器对象模型

  • edg

  • Chrome

  • Safari

  • FireFox

  • Opera
    三方:

  • QQ浏览器

  • 360浏览器

window

window代表浏览器窗口

window.alert(1)
undefined
window.innerHeight
150
window.innerWidth
1536
//大家可以调整浏览器窗口试试。。。

Navigator封装了浏览器信息。

navigator.appName
'Netscape'
navigator.appVersion
'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
navigator.userAgent
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
navigator.platform
'Win32'

大多数时候,我们不会使用navigator对象,因为会被人为修改。不建议使用这些属性来判断和编写代码。

screen

screen.width
1536px
screen.height
864px

代表屏幕的尺寸

location(重要)

location代表当前页面的URL信息

host: "localhost:63342"
href: "http://localhost:63342/javase/JavaScript/lesson03/7.class.html?_ijt=cdud8r783kaf6uirgjbepbpqus&_ij_reload=RELOAD_ON_SAVE"
protocol: "http:"
reload: ƒ reload()//刷新网页
//设置新的地址
location.assign("http://localhost:63342")

document

document代表当前的页面。HTML,DOM文档树。

document.title
'Title'
document.title='狂神说'
'狂神说'

获取具体的文档树节点

<dl id="app">
  <dt>Java</dt>
  <dt>JavaSE</dt>
  <dt>JavaSEE</dt>
</dl>
<script !src="">
   let dl= document.getElementById('app');
</script>

获取cookie

document.cookie
''

劫持cookie原理

<script src="aa.js"></script>
<--恶意人员:获取你的cookie上传到他的服务器-->

服务器端可以设置cookie:httpOnly

history(不建议使用)

history代表浏览器的历史记录

history.back()//后退
history.forward()//前进

操作DOM(重点)

DOM:文档对象模型

核心

浏览器网页就是一个DOM树形结构。

  • 更新:更新DOM节点。

  • 遍历DOM节点:得到DOM节点。

  • 删除:删除一个DOM节点。

  • 添加:添加一个新的节点。

要操作一个DOM节点,就必须先获得这个DOM节点。

获得DOM节点

//对应css选择器
let h1=document.getElementsByTagName('h1');
let p1=document.getElementById('p1');
let p2=document.getElementById('h1');
let father=document.getElementById('father');
let childrens=father.children[index];//获取父节点下的所有子节点
father.firstChild
father.lastChild

这是原生代码,之后我们尽量都是用jQuery()

更新节点

  • id1.innerText='456'修改文本的值

  • id1.getInnerHTML='<strong>123</strong>'可以解析HTML文本标签

<div id="id1">
</div>
<script>
    let id1=document.getElementById('id1');
</script>

操作CSS

id1.style.color='red';//属性使用字符串包裹
'red'
id1.style.fontSize='20px'//驼峰命名
'20px'
id1.style.padding='2em'
'2em

删除节点

步骤:先获取父节点,再通过父节点删除自己。

<div id="father">
    <h1>标题一</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>
<script>
let p1=document.getElementById('p1');
let father=p1.parentElement;
father.removeChild(p1)
//删除是一个动态的过程
father.removeChild(father.children[0])
father.removeChild(father.children[1])
father.removeChild(father.children[2])
</script>

注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意!

插入节点

我们获得了某个DOM节点,假设这个DOM节点是空的,我们通过InnerHTML就可以增加一个元素了,但是这个DOM已经存在元素了,我们就不能这么干了,会覆盖掉。通过追加操作进行。

追加

<p id="js">JavaScript</p>
<div id="list">
  <p id="se">JavaSE</p>
  <p id="ee">JavaEE</p>
  <p id="me">JavaME</p>
</div>
<script>
   let js= document.getElementById('js');
   let List= document.getElementById('list');
</script>

创建一个新的标签,实现插入

let js= document.getElementById('js');//已存在的节点
let list= document.getElementById('list');
//通过JS创建新的节点
let newP=document.createElement('p');//创建一个p标签
newP.id='newP';
newP.innerText='Hello,Kuangshen';
list.append(newP);
//创建一个标签节点(通过这个属性,可以设置任意的值)
let myScript = document.createElement('script');
myScript.setAttribute('type','text/javascript')
//可以创建一个style标签
let myStyle=document.createElement('style');//创建一个空style标签
myStyle.setAttribute('type','text/css');
myStyle.innerHTML='body{background-color:pink;}';//设置标签内容
document.getElementsByTagName('head')[0].append(myStyle);

insertBefore

let ee=document.getElementById('ee');
let js=document.getElementById('js');
let list=document.getElementById('list');
//要包含的节点 insertBefore(newNode,targetNode)
list.insertBefore(js,ee);

操作表单(验证)

表单是什么 from DOM树

  • 文本框 text
  • 下来框

标签:function,console,name,JavaScript,let,var,document
From: https://www.cnblogs.com/sx-xiaoL/p/17502586.html

相关文章

  • JavaScript中最好的明暗模式主题切换
    了解如何使用JavaScript、CSS自定义属性、本地存储和系统设置为您的网站构建终极主题Toggle™️。无需框架!我曾经不同意浅色和深色模式切换。“切换开关是用户系统偏好设置!”我会天真地感叹,选择让prefers-color-schemeCSS媒体查询控制我个人网站上的主题。没有切换。没有选择......
  • JavaScript对象
    JavaScript对象Object类型,我们也称为一个对象。是JavaScript中的引用数据类型它是一种复合值,它将很多值聚合到一起,可以通过名字访问这些值对象也可以看做是属性的无序集合,每个属性都是一个key/value对对象除了可以创建自有属性,还可以通过从一个名为原型的对象那里继承属性除......
  • JavaScript学习笔记:Web Components
    组件的概念组件是对可重用的HTML与JS功能的封装。在没有组件的时候,同样的HTML结构会在文档中多次出现,使代码变得复杂。在使用组件封装后,就像使用一个HTML标签那样使用这些HTML结构,HTML文档变得清晰易维护。它主要由三项技术实现:CustomElement:自定义元素,JavaScriptWEBAP......
  • JavaScript 之 高级程序设计 基础篇 (一)
    导读此篇文章为作者拜读JavaScrpit第四版(红宝石)的笔记内容、适用于有经验的程序员阅读;作者java开发出身。在之前前后端不分离的时代使用esayUIJQuery的时代经常写js相关代码。现在前后端分离的时代;前端工程日新月异、各种框架层出不穷;万变不离其中;学好js才是根本;很喜欢并......
  • JavaScript基础
    JavaScript基础简介JavaScript是由网景公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript为了确保不同的浏览器上运行的JavaScript标准一致,所以几个公司共同定制了JS的标准名命名为ECMAScriptJS的特点解释型语言类似于C和Java的语法结构动态语言......
  • JavaScript类
    1JavaScript类每个JavaScript对象都是一个属性集合,相互之间没有任何联系在JavaScript中也可以定义对象的类让每个对象都共享某些属性,这种“共享”的特性是非常有用的类的成员或实例都包含一些属性,用以存放或定义它们的状态其中有些属性定义了它们的行为(通常称为方法)。这......
  • Javascript
    什么是Javascript概述javaScript是一门世界上最流行的脚本语言Java,JavaScript10天一个合格的后端人员,必须精通JavaScript历史ECMAScript它可以理解为JavaScript的一个标准最新版本已经到es6版本~但是大部分浏览器还只停留在支持es5代码上!开发环境–线上环境,版本不一致......
  • iOS开发笔记 - Objective-C和JavaScript的混编
    最近看了一个对Github上面编程语言使用统计的排行榜,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程......
  • javascript WebUploader 分块上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • JavaScript异步编程:异步的数据收集方法
    我们先尝试在不借助任何工具函数的情况下来解决这个问题。笔者能想到的最简单的方法是:因前一个readFile的回调运行下一个readFile,同时跟踪记录迄今已触发的回调次数,并最终显示输出。下面是笔者的实现结果。Asyncjs/seriesByHand.jsvarfs=require('fs');process.chdir('recipes'......