首页 > 其他分享 >开课吧前端1期.阶段2:ES6详解-3 面向对象 JSON

开课吧前端1期.阶段2:ES6详解-3 面向对象 JSON

时间:2023-09-06 16:33:06浏览次数:38  
标签:function ES6 name json JSON let User pass 开课

7、 面向对象-基础

//原来写法
function User(name,pass){  //这就是一个类
    this.name = name;
    this.pass = pass;
}
User.prototype.showName=function(){alert(this.name)};
User.prototype.showPass=function(){alert(this.pass)};
var u1=new User('blue','111');
u1.showName()
u1.showPass()

老版缺点: 无法却分类和function
类和原型是散开的,分开写的 //新版,更像Java,构造器和类分开 class User{ constructor(name,pass){ //构造器 this.name=name; this.pass=pass; } showName(){ //就是没有function alert(this.name) } showPass(){ alert(this.pass) } }
  • ES6的面向对象
    • class关键字,构造器和类分开了
    • class里面直接加方法

7.1、继承

个人感觉继承才是面向对象重点,面向对象的特点可以不断增加功能,我一定实在从已有的基础之上增加功能

//老版本
function User(name,pass){
    this.name = name;
    this.pass = pass;
}
User.prototype.showName=function(){alert(this.name)};
User.prototype.showPass=function(){alert(this.pass)};

//继承User
function VipUser(name,pass,level){
    User.call(this,name,pass); //以前通过call
    this.level = level
}
VipUser.prototype=new User();
VipUser.prototype.constructor=VipUser;
VipUser.prototype.showLevel=function(){
    alert(this.level);
}

var v1 = new VipUser('blue','1111',3)
v1.showLevel()



//新版本继承
super = 超类 = 父类

class VipUser extends User{
    constructor(name,pass,level){
        super(name,pass);        //直接super,执行父类的构造函数
        this.level = level;
    }
    showLevel(){
        alert(this.level);
    }
}

 

8、面向对象-实例

举例:面向对象的应用--- React ,非常流行的前端框架,基本面试都会提到,强依赖于ES6面向对象

  • React的特点:
    • 1、强调的是 模块化、组建化
      • 一个组件就是一个class  
    • 2、强依赖于JSX  
      • JSX==babel=browser.js ,可以理解JS的扩展      
//React最基础的东西
<script src="react.js"></script>
<script src="react-dom.js"></script>
<script src="browser.js"></script>  //JSX其实就是babel所以引入
<script type="text/javascript">  //type指定js类型,现在淘汰玩就剩下javascript,写不写type都行
</script>


<script type="text/babel">
    window.onload=function(){
        let oDiv=document.getElementById('div1')
    
        ReactDOM.render(
            //渲染,1渲染什么东西,2往哪放
            <span>123</span>,    //不写引号,就是要创建一个html标签
            oDiv
        );
    }

</script>

 

//React组件,以class形式存在
<script type="text/babel">
    class Test extends React.Component{
            //继承Component,继承最大的意义就是不用从0开始  
        constructor(...args){
           super(...args); //接到参数给父类
        }
        
        render(){  //任何一个React组件,必须都有一个render方法,所有组件可见的
            return <span>123</span> 
             return <li>{this.props.str}</li> //传入自定义属性
        }
    }
    
    
     ReactDOM.render(
        <Test></Test>,   //实例化不需要去new,只需要标签去使用即可
        <Test str="abc"></Test>
         oDiv
     );

</script>
//组件套组件,组件之上还有组件
class List extends React.Component{
       constructor(...args){
           super(...args);       
       }

     render(){
         let aItems=[];
         for(let i=0;i<this.props.arr.length;i++){
             aItems.push(<Test str={this.props.arr[i]}></Test>)
         }
         //for循环换种写法
         let aItem = this.props.arr.map(a=><Item str={a}></Item>)
        //简写3
        return <ul>{this.props.arr.map(a=><Item str={a}></Item>)}</ul>
     
         return <ul>
                 <Test str="abc"></Test>
                <Test str="abc"></Test>
         </ul>;
         
        return <ul>
                 {aItems}  //使用数组使用fa
         </ul>;
         
     }
}


class Mock extends React.Component{
       constructor(...args){
           super(...args);       
       }

     render(){
         return <List></List> //组件套组件
         return <List arr="{['abc',‘123’,‘456’,‘789’]}"></List> //组传入数组
     }
}

9 、json

  1. JSON对象 (在ES5里面就有)
  2. 简写
    1. 名字一样
    2. 方法简写

9.1、JSON对象

//JSON变成字符串
let json={a:5,b:5}
let str = 'http://xx.com?data='+JSON.stringify(json); //字符串动词化
let str = 'http://xx.com?data='+encodeURIComponent(JSON.stringify(json)); //URI编码后可以URL传参数
//字符串变回来 注意:JSON的标准写法 【重点】 1.只能用双引号 2.所有的名字都必须用引号包起来 let str = '{"a":12,"b":"xx","c":2}' let json = JSON.parse(str) console.log(json)

 

9.2、简写

名字跟值(key和value)一样 , 留一个就行

方法 :function 一块删

//
let a=12
let b=5
let json={a:a,b:b}
console.log(json) //能出来
//简写,名字一样写一个
let json={a,c:15} //a简写

//方法
let json={
    a:12,
    show:function(){this.a}
}
//简写
let json={
    a:12,
    show(){alert(this.a)} //把function去掉
}
json.show();

 

标签:function,ES6,name,json,JSON,let,User,pass,开课
From: https://www.cnblogs.com/codelives/p/17673955.html

相关文章

  • 软件测试|Python对JSON的解析和创建详解
    简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,已经成为当今互联网应用中广泛使用的数据格式之一。Python提供了内置的模块来解析和创建JSON数据,使得在Python中处理JSON变得非常简单。本文将详细介绍Python对JSON的解析和创建过程,并提供示例代码来帮助大家更好地理......
  • vue3集成jsoneditor
    一、背景之前在做录制回放平台的时候,需要前端展示子调用信息,子调用是一个请求列表数组结构,jsoneditor对数组的默认展示结构是[0].[1].[2]..的方式,为了达到如下的效果,必须用到onNodeName的钩子函数,因此深入调研了下vue3如何集成jsoneditor最后做出来的效果图onNodeName的参考......
  • 行行AI公开课:在AI大模型和应用落地的今天,算力究竟如何获得?
    行行AI是博客园和天使投资方顺顺智慧共同成立的合资公司。如果说,大模型是AI抽象化的“肉身”,那么海量的算力,则是维系这具肉身运转的“血液”。随着ChatGPT等人工智能技术的高速发展,以及大语言模型的出现和应用,各个企业对智能算力的需求也在与日俱增。此番形势下,谁掌握了算力这......
  • ES6前端技术之第二讲 let和const命令
    第二讲let和const命令前人栽树后人乘凉,前人挖坑后人遭殃!!!JS是弱类型语言,当初设计者为了使用的便捷,开发人员开心,留下了不少坑。请看JS系列坑之技术细节:var关键字挖的坑1.可以重复声明变量vara=88;vara="张老师";console.log(a);填坑:ES,let关键字......
  • PostgreSQL JSON
    准备CREATETABLEorders( idserialNOTNULLPRIMARYKEY, infojsonNOTNULL);INSERTINTOorders(info)VALUES('{"customer":"LilyBush","items":{"product":"Diaper","qty":24}}'......
  • Cannot deserialize value of type `com.xx.xxxx` from Array value (token `JsonToke
    点击提交按钮的时候,直接服务器端报上面的错,意思是json不能解析。因为程序中用到了递归,就是自己引用了自己(实体类)。原因:实体类中children定义的是对象的形式,但是前端定义的是数组[]的形式。解决:前端改成对象形式,{},这样前后端一致就可以正常传值了。  上面children赋值了......
  • ES6的新特性有哪些
    1、let和const声明变量的方式,取代了var关键字。2、箭头函数(ArrowFunction),简化了函数的书写方式。3、模板字符串(TemplateString),允许在字符串中使用变量和表达式,而不需要使用字符串连接符号4、解构赋值(DestructuringAssignment),允许从数组和对象中提取值并赋值给变量。......
  • 最新敏捷认证培训课,近期公开课
    ​ 最新敏捷认证培训课,近期公开课   开课时间课程名称认证证书授课讲师授课方式报名09月09-10日SAFe认证LeadingSAFe官方认证班SAFe®6.0Agilist证书EricLiao&ScottWang远程立即报名09月15-17日SAFe认证SSM&LeadingSAFe官方双认证班SAFeAg......
  • jmeter JSON提取器匹配值设置以及参数值调用
    JSON匹配值设置以及参数调用-1:获取的返回值可能有多个,调用参数值时:${参数名_数字},例如:获取第一个值${参数名_1},获取第3个值${参数名_3}   数字:获取参数值中的第几个值,例如设置为5,获取返回值的第5个值,参数调用:${参数名}0:随机获取1个值,参数调用:${参数名}注意:匹配值有......
  • es6 扩展运算符 三个点(...)
         参考:https://blog.csdn.net/qq_30100043/article/details/53391308   参考:https://blog.csdn.net/snackpdd/article/details/119388250......