命名函数中存在对象时如何访问外部对象

时间:2018-11-25 01:32:52

标签: javascript

当命名函数中存在对象时,如何访问该函数之外的对象。

 function a(){
   var someobj = { b: "abc"} 
   console.log(someobj)
 }

我试图设置一个变量,然后访问它,但出现错误。

var bla = function a() {
  var someobj = {
    b: "abc"
  }
  console.log(someobj)
}
console.log(bla().someobj)

2 个答案:

答案 0 :(得分:1)

这是一个局部变量,其作用域在该函数内部。

可能您对如何将函数称为constructor感到困惑。

new bla()

因此,您可以通过称为constructor的函数访问实例化对象的属性。此外,要设置属性,您需要使用上下文this

var bla = function a() {
  this.someobj = {b: "abc"};
//^^^^
//  console.log(someobj)
}
console.log(new bla().someobj)
//          ^^^^^^^^^

答案 1 :(得分:1)

您需要在函数中返回该对象。

添加“。” <?php /** * This is the model class for table "tbl_user". * * The followings are the available columns in table 'tbl_user': * @property integer $id * @property string $username * @property string $password * @property string $email * @property string $image * @property double $lat * @property double $lng */ class User extends CActiveRecord { /** * @return string the associated database table name */ public function tableName() { return 'tbl_user'; } /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('username, password, email', 'required'), array('lat, lng', 'numerical'), array('username, password, email', 'length', 'max'=>128), array('image', 'length', 'max'=>100), // The following rule is used by search(). // @todo Please remove those attributes that should not be searched. array('id, username, password, email, image, lat, lng', 'safe', 'on'=>'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'id' => 'ID', 'username' => 'Username', 'password' => 'Password', 'email' => 'Email', 'image' => 'Image', 'lat' => 'Lat', 'lng' => 'Lng', ); } /** * Retrieves a list of models based on the current search/filter conditions. * * Typical usecase: * - Initialize the model fields with values from filter form. * - Execute this method to get CActiveDataProvider instance which will filter * models according to data in model fields. * - Pass data provider to CGridView, CListView or any similar widget. * * @return CActiveDataProvider the data provider that can return the models * based on the search/filter conditions. */ public function search() { // @todo Please modify the following code to remove attributes that should not be searched. $criteria=new CDbCriteria; $criteria->compare('id',$this->id); $criteria->compare('username',$this->username,true); $criteria->compare('password',$this->password,true); $criteria->compare('email',$this->email,true); $criteria->compare('image',$this->image,true); $criteria->compare('lat',$this->lat); $criteria->compare('lng',$this->lng); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); } /** * Returns the static model of the specified AR class. * Please note that you should have this exact method in all your CActiveRecord descendants! * @param string $className active record class name. * @return User the static model class */ public static function model($className=__CLASS__) { return parent::model($className); } } 之后不返回任何内容与bla()

undefined.someobj

相关问题